繁体   English   中英

Python 2.x 是否总是为打印语句返回一个字符串?

[英]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

它只是返回我问的内容。 这是否意味着 Python 2.x 总是将打印值转换为字符串?

在原始 python 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 vs 01 ,在 Python 2 中,带有前导零的数字是八进制:

>>> 010
8

此语法在 Python 3 中是非法的,因此您会收到SyntaxError: invalid token 这发生在print语句看到发生了什么之前,所以它与print无关。

如果你想在 Python3 中用八进制写一个数字,正确的语法是0o...如下:

>>> 0o10
8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM