python如何定义一个空变量_如何在python中定义自由变量? - python
python doc中的本地/全局/自由變量定義:
如果名稱(chēng)綁定在塊中,則除非聲明為非本地,否則它是該塊的局部變量。如果在模塊級(jí)別綁定了名稱(chēng),則該名稱(chēng)為全局變量。 (模塊代碼塊的變量是局部變量和全局變量。)如果在代碼塊中使用了變量但未在其中定義,則該變量為空閑變量。
代碼1:
>>> x = 0
>>> def foo():
... print(x)
... print(locals())
...
>>> foo()
0
{}
代碼2:
>>> def bar():
... x = 1
... def foo():
... print(x)
... print(locals())
... foo()
...
>>> bar()
1
{'x':1}
當(dāng)在功能塊(而不是在類(lèi)塊)中調(diào)用locals()時(shí),由Code 1返回自由變量。
在x中,foo()是全局變量,已使用但未在locals()中定義。
但是,它不是的免費(fèi)變量,因?yàn)閛jit_code不會(huì)返回它。
我認(rèn)為這不是醫(yī)生所說(shuō)的。 自由變量有技術(shù)定義嗎?
參考方案
自由變量的定義:已使用,但既不是全局的也不是的。
例如:
x在代碼1中不是免費(fèi)的,因?yàn)樗侨肿兞俊?/p>
x在代碼2的bar()中不是免費(fèi)的,因?yàn)樗墙壎ǖ淖兞俊?/p>
x是免費(fèi)的foo()。
Python的區(qū)別在于閉包。當(dāng)前環(huán)境中未定義自由變量,即e。局部變量的集合,也是而不是的全局變量!因此,必須在其他地方定義。這就是閉包的概念。在代碼2中,foo()在x中定義的bar()上關(guān)閉。 Python使用詞法作用域。這意味著,解釋器僅通過(guò)查看代碼就可以確定范圍。
例如:x在foo()中被稱(chēng)為變量,因?yàn)閒oo()包含在bar()中,而x綁定在bar()中。
全局范圍由Python專(zhuān)門(mén)處理。可以將全局作用域視為最外部作用域,但是由于性能原因,我沒(méi)有這樣做。因此,x不可能同時(shí)是免費(fèi)和全局。
免除
生活不是那么簡(jiǎn)單。存在個(gè)免費(fèi)的全局變量。 Python文檔(執(zhí)行模型)說(shuō):
全局語(yǔ)句的作用域與同一塊中的名稱(chēng)綁定操作相同。如果最接近的自由變量包圍范圍包含全局語(yǔ)句,則將自由變量視為全局語(yǔ)句。
>>> x = 42
>>> def foo():
... global x
... def baz():
... print(x)
... print(locals())
... baz()
...
>>> foo()
42
{}
我自己不知道我們都在這里學(xué)習(xí)。
Python:對(duì)于長(zhǎng)時(shí)間運(yùn)行的進(jìn)程,通過(guò)還是休眠? - python
我正在編寫(xiě)一個(gè)隊(duì)列處理應(yīng)用程序,該應(yīng)用程序使用線(xiàn)程等待和響應(yīng)要發(fā)送到該應(yīng)用程序的隊(duì)列消息。對(duì)于應(yīng)用程序的主要部分,只需要保持活動(dòng)狀態(tài)即可。對(duì)于像這樣的代碼示例:而True: 通過(guò)要么而True: time.sleep(1)哪一個(gè)對(duì)系統(tǒng)的影響最小?除了保持python應(yīng)用運(yùn)行外,什么都不做的首選方式是什么? 參考方案 我可以想象time.sleep()會(huì)減少系…Python:無(wú)符號(hào)32位按位算術(shù) - python
試圖回答另一篇有關(guān)其解決方案涉及IP地址和網(wǎng)絡(luò)掩碼的文章時(shí),我陷入了普通的按位算法。在Python中,是否存在一種標(biāo)準(zhǔn)的方式來(lái)進(jìn)行按位AND,OR,XOR,NOT運(yùn)算,假設(shè)輸入是“32位”(可能是負(fù)數(shù))整數(shù)或long,并且結(jié)果必須是[[ 0,2 ** 32]?換句話(huà)說(shuō),我需要一個(gè)與無(wú)符號(hào)長(zhǎng)整數(shù)之間的C按位運(yùn)算有效的Python對(duì)應(yīng)物。編輯:具體問(wèn)題是這樣的:…>> Python中的運(yùn)算符 - python
>>運(yùn)算符做什么?例如,以下操作10 >> 1 = 5有什么作用? 參考方案 它是右移運(yùn)算符,將所有位“右移”一次。二進(jìn)制10是1010移到右邊變成0101這是5Python:如何從字節(jié)中提取特定位? - python
我有一條消息,顯示為14 09 00 79 3d 00 23 27。我可以通過(guò)調(diào)用message[4]從此消息中提取每個(gè)字節(jié),例如,這將給我3d。如何從該字節(jié)中提取單個(gè)8位?例如,如何將24-27位作為單個(gè)消息?只需28位? 參考方案 要回答問(wèn)題的第二部分,您可以使用按位運(yùn)算來(lái)獲取特定的位值# getting your message as int i = …Python:檢查是否存在維基百科文章 - python
我試圖弄清楚如何檢查Wikipedia文章是否存在。例如,https://en.wikipedia.org/wiki/Food 存在,但是https://en.wikipedia.org/wiki/Fod 不會(huì),頁(yè)面只是說(shuō):“維基百科沒(méi)有此名稱(chēng)的文章。”謝謝! 參考方案 >>> import urllib >>> prin…
總結(jié)
以上是生活随笔為你收集整理的python如何定义一个空变量_如何在python中定义自由变量? - python的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 眼睑下垂手术大概需要多少钱
- 下一篇: 种植牙后期怎么维护