我剛剛在python解釋器上執行了以下程序:>>> def mylife(x):... if x>0:... print(x)... else:... print(-x)... >>> mylife(01)File "<stdin>", line 1mylife(01) ^SyntaxError: invalid token>>> mylife(1)1>>> mylife(-1)1>>> mylife(0)0現在,我已經看到了這一點,但是正如鏈接所言,八進制的0在python中不再起作用(即在python3中不起作用)。但這是否意味著應該正確解釋以0開頭的數字的行為?以base-2還是以正常base-10表示?既然不是這樣,為什么python會表現出這樣的行為?這是實施問題嗎?還是語義問題?
2 回答

jeck貓
TA貢獻1909條經驗 獲得超7個贊
我的猜測是,由于012在python3.x中不再是八進制文字常量,因此他們不允許使用該012語法以避免奇怪的向后兼容錯誤??紤]使用八進制常量的python2.x腳本:
a = 012 + 013
然后將其移植到python 3,它仍然有效-它只是為您提供a = 25而不是a = 21您以前期望的(十進制)。追蹤該錯誤很有趣。
添加回答
舉報
0/150
提交
取消