#6. 파이썬 기본지식 공부(1)
1. 파이썬은 한 번에 하나의 명령어만 실행한다.
2. 중괄호 대신 들여쓰기를 사용해서 코드를 구조화한다. (공백문자가 의미를 가진다.)
들여쓰기는 4칸이 일반적이다. 콜론(:)은 코드 블록의 시작을 의미한다. for문에 대한 블럭 안에 if와 else가 동일한 들여쓰기에 쓰인 것을 볼 수 있다.
for x in array:
if x < pivot:
less.apppend(x)
else:
greater.append(x)
3. 한 줄에 문장이 여러개일 경우 구분을 위해 세미콜론을 사용한다.
그러나 이 같은 형태는 지양하는 것이 좋다.
a = 5; b = 200; c = 23
3. 한 줄에 문장이 여러개일 경우 구분을 위해 세미콜론을 사용한다.
그러나 이 같은 형태는 지양하는 것이 좋다.
a = 5; b = 200; c = 23
4. 모든 것은 객체!
모든 숫자, 문자열, 자료구조, 함수, 클래스, 모듈 등은 파이썬 인터프리터에서 '파이썬 객체라고 하는 어떤 상자' 안에 저장된다.
객체들은 각자 연관된 자료형(함수, 문자열 등)과 내부 데이터를 가지고 있다. 함수도 하나의 객체로 간주한다.
5. 함수 호출은 괄호와 0개 이상의 인자를 전달해서 이뤄진다.
파이썬의 대부분의 객체는 함수를 포함하고 있다. 객체가 포함하고 있는 함수를 '메서드'라고 하며, 메서드를 통해 객체의 내부 데이터에 접근할 수 있다.
obj.some_method(x, y, z) #obj는 객체, some_method는 obj의 메서드, x, y, z는 인자
6. 변수와 참조에 의한 전달
함수에 인자로 객체를 넘기면 (인자는 함수 안의 변수(매개변수) 안에 실제로 들어가는 값), 객체는 복사되지 않는다. 참조가 생성되는 것이다.
a = [1, 2, 3]
b = a #b에는 데이터 [1, 2, 3]이 아니라 리스트 [1, 2, 3]이 전달된다
a.append(4)
#a에 값을 추가하고 b를 출력하면 결과는 리스트[1 2, 3, 4]
#하나의 객체(여기서는 리스트)에 대하여 두 가지 참조(a, b)를 생성한 것이라고 생각하면 된다.
#변수에 값을 할당하는 것(여기서는 변수a에 리스트[1, 2, 3]을 할당한 것)을 '바인딩'이라고 한다.
#할당된 변수는 바운드 변수라고도 한다.
b ##정리하면! 파이썬에서 변수는 객체(리스트)를 참조하는 것들. 따라서 a와 b는 동일한 객체를 참조하니 변경사항이 동일하게 반영됨
[1, 2, 3, 4]
인자로 객체를 넘긴다는 것의 의미는?¶
[1] 값에 의한 호출: 메서드로 인자값을 넘길 때 값을 복사해서 넘기는 형태. 메서드는 복사된 값으로 작업을 하므로 원래의 값이 변형되지 않는다.
[2] 참조에 의한 호출: 인자값을 넘길 때 객체를 참조하는 주소도 같이 넘기는 형태. 메서드 내에서 원래 값에 대한 접근이 가능하다.
#함수 정의하기
def append_element(some_list, element):
some_list.append(element)
#인자로 객체 넘기기
data = [1, 2, 3]
append_element(data, 4)
#data를 출력하면 객체 안의 값이 [1, 2, 3, 4]으로 바뀐 것을 확인할 수 있다.
def append_element(some_list, element):
some_list.append(element)
data = [1, 2, 3]
append_element(data, 4)
data
[1, 2, 3, 4]
7. 객체의 자료형
변수는 특정한 네임스페이스 안에 존재하는 객체에 대한 이름. 자료형에 대한 정보는 객체 그 자체에 저장되어 있다.
파이썬에서의 모든 객체는 특정한 자료형 또는 클래스를 가진다. 객체의 자료형을 아는 것은 중요하다. 자료형을 알면 함수를 작성할때 유용하다.
isinstance함수는 객체가 어떤 자료형인지 알 수 있게 도와준다.
a = 5
isinstance(a, int)
isinstance(a, (int, float)) #튜플: 순차적인 자료구조. 리스트와 구분된다. ()로 표현한다. 안의 값을 변형할 수 없다.(->이뮤터블immutable)
#튜플을 넘겨서 객체의 자료형이 튜플 중 하나인지 검사할 수 있다. (a의 자료형이 int, float중에 있는지 확인)
True
8. 속성과 메서드
객체(a)는 일반적으로 그 객체 안에 저장되는 다른 객체(b)인 속성과(객체a 에 저장된 객체b(속성b))
객체(a) 내부 데이터에 접근할 수 있는 함수인 메서드를 가진다.
속성과 메서드는 getattr 함수를 통해 접근할 수 있다.
9. 덕 타이핑 Duck Typing
객체의 속성과 메소드의 집합이 객체의 타입을 결정하는 것을 의미.
객체가 어떤 타입에 맞는 속성과 메소드를 가지고 있느면 객체가 해당 타입에 속하는 것으로 간주한다.
10. 모듈 import
파이썬에서 모듈이란 함수나 변수, 클래스를 모아 놓은 파일이다. 다른 파이썬 파일(.py)에서 불러와 사용할 수 있게 만든 .py이다.
우리는 다른 사람들이 만들어놓은 모듈을 활용해서 보다 간편하게 코딩할 수 있다. 반대로 직접 만들어서 사용할 수도 있다.
# some_module.py
# some_module.py라는 모듈을 생성한 것. 확장자 .py로 만든 파이썬 파일은 전부 모듈이다.
def f(x):
return x + 2
def g(a, b):
return a + b
# 다른 파이썬 파일(.py)에서 위의 모듈 안의 함수를 사용해야 할 때는 아래와 같이 작성한다. (모듈은 파일로 저장된 상태여야 한다)
import some_module
result = some_module.f(5)
# some_module 안의 함수 f안에 인자5를 입력, 결과를 변수result에 저장한다.
# as 예약어를 사용하면 모듈과 그 안의 함수를 다른 이름으로 호출할 수 있다.
import some_module as sm
from some_module import f as ff
'배우는 것 > Maching Learning' 카테고리의 다른 글
#8. 최근접 이웃 알고리즘 실습, 이웃의 개수가 지도학습에 미치는 영향 (0) | 2021.12.27 |
---|---|
#7. 파이썬 기본지식 공부(2)_스칼라형, 튜플, 리스트, 사전 (0) | 2021.12.23 |
#5. 지도학습에서의 과적합화 (0) | 2021.12.20 |
#4. 얼렁뚱땅 주피터로 맛보기학습 (0) | 2021.12.19 |
#3. 분류 트리, 트리 구조 모델, 분할정복법, 논리문 (0) | 2021.12.19 |