大家都说不要使用全局变量。但是,在 Python 中,默认情况下所有变量都是全局的。有什么办法可以改变这个吗?
def function():
dic['one']=35
dic={}
function()
print(dic)
全局变量是一个命名变量,其值可以从任何范围重新分配。 为了进入更高的范围并重新分配在那里定义的变量,您需要显式使用 global
或
nonlocal
关键字。 例如:
def function():
global foo
foo = 5
foo = 3
function()
print(foo) # prints 5
默认情况下,变量
不是全局的:
def function():
foo = 5
foo = 3
function()
print(foo) # prints 3
在您的示例中,变量
dic
本身并未被修改,而是它引用的值(这是可能的,因为字典是mutable 类型的值;您可以通过
[]
修改字典的内容运算符)。 如果我们尝试修改函数内部的变量
dic
,则此更改不会反映在外部作用域中:
def function():
dic = {'one': 35}
dic={}
function()
print(dic) # prints {}