데이터 타입
데이터 타입 |
시퀀스 |
뮤터블 |
이터러블 |
int |
X |
X |
X |
float |
X |
X |
X |
complex |
X |
X |
X |
bool |
X |
X |
X |
str |
O |
X |
O |
bytes |
O |
X |
O |
bytearray |
O |
O |
O |
tuple |
O |
X |
O |
list |
O |
O |
O |
dictionary |
X |
O |
O |
set |
X |
O |
O |
range |
O |
X |
O |
int, float, complex, bool은 모두 단일형.
str, bytes, bytearray는 문자열을 나타내는 형. 모두 시퀀스이며 이터러블형이다. str과 bytes는 이뮤터블.
tuple과 list는 유사하지만 tuple은 변화할 수 없는 이뮤터블형이다.
dictionary는 3가지 딕셔너리 뷰(dictionary view)를 가진다.
- keys()
- values()
- items()
dictionary와 set은 중복이 없고 순서도 없다.
range는 숫자를 순서대로 생성하는 시퀀스이다. 이뮤터블형이다.
변수 선언
리터럴 vs 인스턴스화
컴프리헨션
리스트 컴프리헨션 : [number for number in range(1, 10)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
한 번에 선언할 수 있다. 반복문을 사용하거나 직접 1부터 10까지 입력하는 방법보다 훨씬 쉽다.
괄호의 형태를 바꾸어 딕셔너리 컴프리헨션, 셋 컴프리헨션 모두 가능.
제너레이터
함수
함수
내부 함수
클로저
내부함수와 다른 점은, 외부함수인 func에 들어온 wow 변수를 직접 사용하며 return이 함수의 동작 값이 아니라 함수 이름을 반환한다는 점이다.
익명 함수 : lambda()
데코레이터
위 블로그에 굉장히 설명이 잘 되어있다.
이미 만들어진 함수들에 같은 동작을 넣고 싶을 때 사용하면 유용하다.
데코레이터를 만들고 @를 써서 사용할 수 있다.
@decorator
def shout_name():
print("NAME!!!!)
shout_name()을 호출하면 데코레이터를 써서 shout_name() 위아래로 무언가를 쓸 수 있다.
객체
객체
클래스 선언
위 처럼 사용하면 album = Baek('Yerin') 이것처럼 입력할 수 있으며 album의 name이라는 속성에 'Yerin'이 입력된 초기 객체가 생성된다.
상속
메소드 오버라이드
메소드 sing을 Singer에게서 상속받지만 Baek 클래스 자신이 다시 메소드 선언을 해 메소드 오버라이드 했기 때문에 Baek을 사용해 만들어진 객체는 sing이라는 행동을 했을 때 "내가 날 모르는 것처럼"을 출력한다.
getter/setter
self.name = name
private
__를 사용해서 private로 쓸 수 있다.
class Wow():
def __init__(self, name):
self.__name = name
wow1 = Wow('Kim')
wow1.__name : 이렇게 접근할 수 없다.
메소드 타입
덕 타이핑
컴포지션
'노력 > 인공지능' 카테고리의 다른 글
8. 파이썬 개인공부 8 (클래스) (0) | 2019.03.25 |
---|---|
7. 파이썬 개인공부 7 (객체) (0) | 2019.03.24 |
6. 파이썬 개인공부 6 (함수) (0) | 2019.03.23 |
5. 파이썬 개인공부 5 (함수형 패러다임) (0) | 2019.03.22 |
4. 파이썬 개인공부 4 (반복) (0) | 2019.03.21 |