3 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
不,名稱(chēng)本身對(duì)結(jié)果代碼的運(yùn)行速度沒(méi)有影響。變量名只是用來(lái)區(qū)分 Python 源代碼中由整數(shù)索引表示的兩個(gè)變量在查找表中:
>>> dis.dis('x=1')
1 0 LOAD_CONST 0 (1)
2 STORE_NAME 0 (x)
4 LOAD_CONST 1 (None)
6 RETURN_VALUE
>>> dis.dis('xyz=1')
1 0 LOAD_CONST 0 (1)
2 STORE_NAME 0 (xyz)
4 LOAD_CONST 1 (None)
6 RETURN_VALUE
>>> dis.dis('x=1;xyz=2;')
1 0 LOAD_CONST 0 (1)
2 STORE_NAME 0 (x)
4 LOAD_CONST 1 (2)
6 STORE_NAME 1 (xyz)
8 LOAD_CONST 2 (None)
10 RETURN_VALUE
在前兩個(gè)中,您會(huì)注意到在生成的字節(jié)碼中沒(méi)有基于變量名稱(chēng)的區(qū)別。在最后,您將看到字節(jié)碼在兩者之間進(jìn)行區(qū)分,但僅在定義它們的順序上,而不是標(biāo)簽的長(zhǎng)度上。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
差異非常小,我們不能得出結(jié)論,這是因?yàn)樽兞康拿Q(chēng)。
import timeit
x=1
xyz=1
start_time = timeit.default_timer()
for i in range(1,1000000):
if x==1:
print("message")
elapsed = timeit.default_timer() - start_time
start_time2 = timeit.default_timer()
for i in range(1,1000000):
if xyz==1:
print("message")
elapsed2 = timeit.default_timer() - start_time2
print("small variable printing = ",str(elapsed),"big variable printing = "+str(elapsed2))
結(jié)果是:
small variable printing = 3.6490847053481588 big variable printing = 3.7199463989460435
添加回答
舉報(bào)