Python 2.x 总是 return 打印语句的字符串吗?
Does Python 2.x always return a string for print statements?
我正在研究 Python 3.8 和 2.7,发现 Python 3 中的打印函数不允许打印前导零。见下文:
>>> 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
正是returns我问的。这是否意味着 Python 2.x 总是将打印值转换为字符串?
在原来的python2中,print
是一个语句,return
根本不是一个值。
>>> x=print 'hi'
File "<stdin>", line 1
x=print 'hi'
^
SyntaxError: invalid syntax
如果你在 python 2.7 中使用未来兼容的打印功能,比如说,它的行为与 Python 3.
完全一样
在Python3、print
中,一个函数,总是returnsNone
。它打印到文件(通常是标准输出),但函数返回的值是 None
.
>>> x=print(1)
1
>>> x
>>> type(x)
<type 'NoneType'>
至于1
vs 01
,在Python 2中,前导零的数字是八进制:
>>> 010
8
此语法在 Python 3 中是非法的,所以你得到 SyntaxError: invalid token
。这发生在 print
语句看到发生了什么之前,所以它与 print
.
无关
如果您想 ,正确的语法是 0o...
,如:
>>> 0o10
8
我正在研究 Python 3.8 和 2.7,发现 Python 3 中的打印函数不允许打印前导零。见下文:
>>> 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
正是returns我问的。这是否意味着 Python 2.x 总是将打印值转换为字符串?
在原来的python2中,print
是一个语句,return
根本不是一个值。
>>> x=print 'hi'
File "<stdin>", line 1
x=print 'hi'
^
SyntaxError: invalid syntax
如果你在 python 2.7 中使用未来兼容的打印功能,比如说,它的行为与 Python 3.
完全一样在Python3、print
中,一个函数,总是returnsNone
。它打印到文件(通常是标准输出),但函数返回的值是 None
.
>>> x=print(1)
1
>>> x
>>> type(x)
<type 'NoneType'>
至于1
vs 01
,在Python 2中,前导零的数字是八进制:
>>> 010
8
此语法在 Python 3 中是非法的,所以你得到 SyntaxError: invalid token
。这发生在 print
语句看到发生了什么之前,所以它与 print
.
如果您想 0o...
,如:
>>> 0o10
8