지난 주에 파이썬 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 함수가 추가 되어 한개 이상의 아이템을 무작위로 선택해 리턴할 수 있습니다.
이외에도 많은 사항이 변경되었습니다. 주목할 만한 내용이 발견되면 업데이트 하겠습니다.