簡體   English   中英

為什么python print(09)給出SyntaxError:無效令牌但沒有print(07)?

[英]Why python print(09) give SyntaxError: invalid token but not print(07)?

這是我的系統上安裝的Python版本。

Python 2.7.14 |Anaconda, Inc.| (default, Oct 16 2017, 17:29:19) 
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

不知何故,08、09在8、9時無法理解,但其他數字起作用

>>> print(02)
2
>>> print(09)
  File "<stdin>", line 1
    print(09)
           ^
SyntaxError: invalid token
>>> print(08)
  File "<stdin>", line 1
    print(08)
           ^
SyntaxError: invalid token
>>> print(07)
7

不僅打印,而且datetime.date也拋出SyntaxError

>>> import datetime
>>> datetime.date(2017,11,09)
  File "<stdin>", line 1
    datetime.date(2017,11,09)
                           ^
SyntaxError: invalid token
>>> datetime.date(2017,11,04)
datetime.date(2017, 11, 4)
>>> 

Python 2.x上以0開頭(且不跟xb )的整數文字是八進制文字 (為了將來的兼容性, 0o前綴也表示八進制文字,它是Py3中唯一接受的形式,該形式拒絕所有 “普通” 0前綴為int文字,以避免可能嘗試C八進制語法的人感到困惑。 八進制只有0到7之間的數字,因此9在八進制中是無意義的,而09明確要求將其解釋為八進制,因此是錯誤。

簡而言之,不要試圖以0開頭填充int常量。 它改變了含義,而不僅僅是外觀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM