지난 주에 파이썬 3.6 버전이 릴리즈되었습니다. 아나콘다 패키지들도 대부분 파이썬 3.6에 맞춰져 준비되었으니 파이썬 3.6 버전을 써볼 수 있을 것 같습니다. 다만 텐서플로우나 아나콘다에서 제공하지 않는 라이브러리들은 아직 3.6 버전과 호환되지 않을 수 있습니다. 그러므로 파이썬 3.6 을 테스트하려면 콘다 환경을 따로 만들어서 사용해 보는 것이 좋습니다.
$conda create -n python36 python=3.6 $source activate python36
파이썬 3.6에서 눈에 띠는 변경사항을 정리하였습니다.
1. 포맷 문자열
f
로 시작하는 문자열은 중괄호 안에 대치할 변수 이름을 넣을 수 있습니다. 문자열 평가는 한번만 일어 납니다. 변수 이름뒤에 이전과 동일하게 포맷팅 옵션을 쓸 수 있습니다.
>>> name = "철수" >>> s = f"내 이름은 {name}입니다." >>> s '내 이름은 철수입니다.' >>> name = "영희" >>> s '내 이름은 철수입니다.' >>> val = 1.23456789 >>> f"{val:.3f}" '1.235'
2. 숫자 밑줄 표현
가독성을 위해 숫자를 사용할 때 밑줄 문자를 써서 천 단위를 표시할 수 있습니다.
>>> 1_000_000_000 1000000000 >>> 0x_FF_FF_FF 4294967295
3. Path 오브젝트 활용
pathlib.Path
오브젝트를 open 함수에 직접 넣을 수 있고 os 와 os.path 하위의 함수들에서도 사용할 수 있습니다.
>>> import pathlib >>> with open(pathlib.Path("README")) as f: ... >>> import os.path >>> os.path.splitext(pathlib.Path("some_file.txt")) ('some_file', '.txt') >>> os.path.join("/a/b", pathlib.Path("c")) '/a/b/c' >>> import os >>> os.fspath(pathlib.Path("some_file.txt")) 'some_file.txt'
4. **kwargs 파라미터 순서 유지
**kwargs 로 넘어온 딕셔너리가 입력 파라메타의 순서대로 소팅됩니다.
>>> def myfunc(a, b, **kwargs): print(kwargs) >>> myfunc(1,2, t=1, y=2, u=3, i=4) {'t': 1, 'y': 2, 'u': 3, 'i': 4} >>> myfunc(1,2, i=1, u=2, y=3, t=4) {'i': 1, 'u': 2, 'y': 3, 't': 4}
5. secrete 모듈 추가
암호 생성에 필요한 난수를 위해 random
이나 os.urandom
대신 권장되는 secrete
모듈이 추가되었습니다.
>>> import secrets >>> secrets.randbelow(100) >>> 41 >>> secrets.token_hex(16) >>> '3d7975470f64cbca981c07209c0cbcc4' >>> secrets.token_urlsafe(16) >>> 'ZLIS3TVPH301LwuPzwFEjg'
6. http.client 가 HTTP chunked 인코딩을 지원합니다.
7. json.loads, json.load 함수가 문자열 외에 bytes, bytearray 도 지원합니다.
8. random.choices 함수가 추가 되어 한개 이상의 아이템을 무작위로 선택해 리턴할 수 있습니다.
이외에도 많은 사항이 변경되었습니다. 주목할 만한 내용이 발견되면 업데이트 하겠습니다.