Python 2.x는 항상 print 문에 대한 문자열을 반환합니까?
Nov 16 2020
나는 Python 3.8과 2.7을 모두 엉망으로 만들고 Python 3의 인쇄 기능이 인쇄에서 선행 0을 허용하지 않는다는 것을 알았습니다. 아래 참조 :
>>> print(01)
File "<stdin>", line 1
print(01)
^
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
Python 3.x가 인쇄 할 때도 데이터 유형을 구별하기 때문에 이런 일이 발생한다고 생각합니다. 이것이 다음이 작동하는 이유입니다.
>>> print('01')
01
나는 명시 적으로 문자열을 인쇄하도록 요청했습니다. Python 2.7에서는 다음 문에 오류가 없습니다.
>>> print '01'
01
내가 요청한 것을 반환합니다. Python 2.x가 항상 인쇄 값을 문자열로 변환한다는 의미입니까?
답변
5 kojiro Nov 16 2020 at 20:52
원래 파이썬 2에서는 print
문이며 return
값 이 전혀 없습니다 .
>>> x=print 'hi'
File "<stdin>", line 1
x=print 'hi'
^
SyntaxError: invalid syntax
예를 들어 python 2.7에서 미래 호환 인쇄 기능을 사용하는 경우 Python 3과 똑같이 작동합니다.
Python 3에서 print
함수 인은 항상 None
. 파일 (일반적으로 표준 출력)에 인쇄하지만 함수에서 반환 된 값은 None
입니다.
>>> x=print(1)
1
>>> x
>>> type(x)
<type 'NoneType'>
에 관해서는 1
대 01
파이썬 2, 앞에 0이있는 숫자가 진수입니다 :
>>> 010
8
이 구문은 Python 3에서 불법이므로 SyntaxError: invalid token
. 이것은 print
성명서가 무슨 일이 일어나고 있는지 확인 하기 전에 발생 하므로 print
.
Python3에서 8 진수로 숫자 를 쓰 려면 올바른 구문은 다음 0o...
과 같습니다.
>>> 0o10
8