第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

動態(tài)設(shè)置局部變量

動態(tài)設(shè)置局部變量

幕布斯6054654 2019-06-26 13:49:58
動態(tài)設(shè)置局部變量如何在Python中動態(tài)設(shè)置局部變量?(其中變量名是動態(tài)的)最新情況:我知道這不是一個好的做法,而且這些評論都是合理的,但這并不意味著這是一個糟糕的問題,只是一個更理論性的問題-我不明白為什么這樣做有理由被否決。
查看完整描述

3 回答

?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗 獲得超6個贊

其他人建議分配給locals()..這在函數(shù)中不起作用,在該函數(shù)中,可以使用LOAD_FAST操作碼,除非你有一個exec函數(shù)中某個位置的語句。為了支持這個語句(它可能會創(chuàng)建編譯時不知道的新變量),Python將被迫按函數(shù)中的名稱訪問局部變量,因此編寫locals()起作用了。這個exec可能不在執(zhí)行的代碼路徑之外。

def func(varname):
    locals()[varname] = 42
    return answer           # only works if we passed in "answer" for varname
    exec ""                 # never executedfunc("answer")>>> 42

注意:這只適用于Python2.x。他們在Python 3和其他實現(xiàn)(Jython、IronPython等)中消除了這種愚蠢之處。也可能不支持。

不過,這是個壞主意。如果您不知道變量的名稱,您將如何訪問它們?通過locals()[xxx]可能吧。所以為什么不直接用你自己的字典而不是污染locals()(并且冒著重寫函數(shù)實際需要的變量的機(jī)會)?


查看完整回答
反對 回復(fù) 2019-06-26
?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗 獲得超6個贊

(給其他人做個簡短的留言)

好吧,所以修改locals() 不是要走的路(同時修改globals() 才能起作用)。同時,exec 可能是,但速度慢得令人痛苦,因此,與正則表達(dá)式一樣,我們可能希望compile()它首先:

# var0 = 0; var1 = 1; var2 = 2code_text = '\n'.join( "var%d = %d" % (n, n) for n in xrange(3) )filename = ''code_chunk = compile( code_text, filename, 'exec' )# now later we can use exec:exec code_chunk # executes in the current context


查看完整回答
反對 回復(fù) 2019-06-26
  • 3 回答
  • 0 關(guān)注
  • 640 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號