>>>importkeyword>>>dir(keyword)# 주피터 노트북에서는 아래처럼 나오고 인터프리터에서는 한 줄로 나옴.
['__all__','__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__spec__','iskeyword','kwlist','main']
dir : 인자가 있으면, 현재 지역 스코프에 있는 이름들의 리스트를 돌려준다. 인자가 없으면, 현재 객체에 유효한 어트리뷰트의 리스트를 돌려주려고 시도한다. docs
>>>keyword.kwlist# 주피터 노트북에서는 아래처럼 나오고 인터프리터에서는 한 줄로 나옴.
['False','None','True','and','as','assert','async','await','break','class','continue',...]
>>>len(keyword.kwlist)35
1) 식별자와 표현식
a=1+2 (왼쪽 : 식별자 (identifier) / 오른쪽 : 표현식)
식 = 하나의 결과값으로 축약할 수 있는 것
ex) 1+2는 3으로 축약할 수 있음
>>>regolas=1>>>print(regolas)1
식별자 선언 시
메모리에 공간 확보
그 메모리를 가르키는 공간 확보 (binding)
2. 네임스페이스
>>>a=1>>>b=3ifa>0else5>>>xNameError
NameError : 정의되지 않은 언어를 출력할 때 에러 발생
%whos
어느 객체가 선언되었는지 네임스페이스를 보여준다.
%whos를 입력하였을 때 없는 객체를 입력하면 에러가 발생한다.
즉 네임 스페이스에 없는 객체를 선언할 때 NameError 발생
%who
%who_ls
3. 메모리
# 출력되는 output(주석)은 메모리 주소
>>>id(a)443780512>>>hex(id(a))'0x108deb5a0'>>>a=1000>>>hex(id(a))'0x10bd9c3f0'>>>b=1000>>>hex(id(b))'0x10bd9c490'# -5~256 사이에 있는 정수이면 똑같은 메모리를 가르킨다. (interning)
>>>a=10>>>id(a)4443780800>>>b=10>>>id(b)4443780800
현대 프로그래밍 언어에서 overflow가 되는 언어는 적다. python 또한 overflow는 없지만 내부적으로 처리하는 속도는 급격히 떨어진다.
7. 함수 사용 예시
>>>a=-1>>>dir(a)# a에 사용할 수 있는 함수들 출력됨
>>>a.__abs__<method-wrapper'__abs__'ofintobjectat0x108deb560>>>>a.__abs__()1
>>>-1.__abs__()SyntaxError:invalidsyntax
.을 float로 생각하여 에러가 출력된다.
SyntaxError : 문법적으로 잘못 접근
>>>-1.__abs__()-1>>>(-1).__abs__()1#(연산자 우선순위)
8. 부동소수
1) 부동소수점의 overflow
>>>sys.float_info#부동소수점에 대한 정보
sys.float_info(max=1.7976931348623157e+308,max_exp=1024,max_10_exp=308,min=2.2250738585072014e-308,min_exp=-1021,min_10_exp=-307,dig=15,mant_dig=53,epsilon=2.220446049250313e-16,radix=2,rounds=1)
2) 무한대
파이썬에는 무한대가 있고 무한대는 부동소수로 표현한다.
>>>x=float('inf')>>>x=float('infinity')>>>t=float('nan')# 파이썬에는 숫자가 아닌 것도 지정할 수 있다.
>>>tnan>>>a=float('inf')>>>a==a+1True# (무한대+무한대는 무한대이므로 주의!)
>>>a=1.7976931348623157e+308# 부동소수점의 max값
>>>a+11.7976931348623157e+308
부동소수는 정확하게 구할 수 없다.
# output :
0.2>>>0.1+0.1+0.10.300000000004
무한대 개념은 float 타입
파이썬에서 복소수 표현은 j 사용
>>>a=3+2j>>>type(a)complex#(complex는 복소수 타입)
>>>dir(a)# a에 사용할 수 있는 함수들 출력됨
>>>a.conjugate()3-2j#(켤레복소수)
>>>a='abc'# 한꺼번에 a,b,c를 남는다
>>>a[0]'a'>>>a[4]IndexError>>>a[1:3]'bc'#(slice)
>>>a='abc'>>>a[1:5]'bc'#(slice는 범위를 벗어나도 에러가 발생하지 않는다.)
>>>a='반지의제왕'>>>a[slice(0,2)]'반지'
Comments