我剛剛在python解釋器上執(zhí)行了以下程序:>>> 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現(xiàn)在,我已經(jīng)看到了這一點(diǎn),但是正如鏈接所言,八進(jìn)制的0在python中不再起作用(即在python3中不起作用)。但這是否意味著應(yīng)該正確解釋以0開(kāi)頭的數(shù)字的行為?以base-2還是以正常base-10表示?既然不是這樣,為什么python會(huì)表現(xiàn)出這樣的行為?這是實(shí)施問(wèn)題嗎?還是語(yǔ)義問(wèn)題?
2 回答

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