簡體   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