2017-11-15 10 views
1

나는 모두 CPython2 및 Pypy2의 동작과 대조, CPython3 및 Pypy3 다음과 같은 사실을 발견 을 제외하고는 0 인 단일 번호를 제외하고 따라서 00은 유효하지만 042은 유효하지 않습니다.이상한 행동은

파이썬 2에서는 모든 정수에 선행 0을 사용할 수 있습니다. 따라서 00042이 유효합니다.

왜 파이썬은 두 버전간에 동작이 변경 되었습니까? ?베이스를 나타내는 단일 문자입니다 0?dddd...을, 각 d 해당 자료의 숫자로 해석됩니다 :

답변

2

파이썬 3 (기본 10 이외의) 모든 정수 리터럴 정의 된 방법을 표준화. 0...은 예외로 유지됩니다. 0은 모든 기준에서 0이므로 명시 적 기본 지정자가 필요하기 전에 0으로 간주됩니다.

가장 큰 변화는 앞에 오는 0은 있지만 명시 적 기본 지정자가없는 숫자는 더 이상 8 진수로 간주되지 않는다는 것입니다. 파이썬 2는 모두 0420o42 등의 진수 표현을 허용 (초기 파이썬의 역사에서,이 세 개의 유효 리터럴 16 진수가 지정하는 유일한 하나 인 상태였다. 0o...0b... 모두 나중에 추가했다 34 진수