![](/img/trans.png)
[英]Python += versus .extend() inside a function on a global variable
[英]Calling versus defining global variables inside a Python function
我對 Python 比較陌生,所以請原諒我的無知。
我有兩個函數作用於單個變量var
:
var = 8
def func1():
print(var)
def func2():
var += 1
print(var)
func2
不會 function 除非我將var
定義為全局變量:
def func2():
global var
var += 1
print(var)
什么功能允許我調用全局變量(如func1
中)但不允許我重新定義全局變量而不先顯式調用它們(如func2
中)?
編程常見問題解答解釋了原因:
在 Python 中,僅在 function 內部引用的變量是隱式全局的。 如果一個變量在函數體內的任何地方都被賦值,除非明確聲明為全局變量,否則它被假定為局部變量。
雖然起初有點令人驚訝,但片刻的考慮解釋了這一點。 一方面,對已分配的變量要求全局性提供了防止意外副作用的障礙。 另一方面,如果所有全局引用都需要全局,那么您將一直使用全局。 您必須將對內置 function 或導入模塊的組件的每個引用聲明為全局。 這種混亂會破壞全局聲明識別副作用的有用性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.