全局变量不好,但在Python中默认使用

全局变量不好,但在Python中默认使用,python,global-variables,Python,Global Variables,每个人都说,不要使用全局变量,它们是坏的,这没关系。但在Python中,如果不执行任何操作,所有变量默认为gobal。 有没有办法改变这个?。提前谢谢你。当做对不起,我的英语 def function(): dic['one']=35 dic={} function() print(dic) 全局变量是一个命名变量,其值可以从任何范围重新分配。为了进入更高的范围并重新分配其中定义的变量,需要显式使用全局或非局部关键字。例如: def function(): global fo

每个人都说,不要使用全局变量,它们是坏的,这没关系。但在Python中,如果不执行任何操作,所有变量默认为gobal。 有没有办法改变这个?。提前谢谢你。当做对不起,我的英语

def function():
    dic['one']=35

dic={}
function()
print(dic)

全局变量是一个命名变量,其值可以从任何范围重新分配。为了进入更高的范围并重新分配其中定义的变量,需要显式使用
全局
非局部
关键字。例如:

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
本身没有被修改,而是它引用的值(这是可能的,因为字典是一种可变的类型的值;您可以通过
[]
操作符修改字典的内容)。如果我们试图在函数内部修改变量
dic
,则此更改不会反映在外部范围中:

def function():
    dic = {'one': 35}

dic={}
function()
print(dic) # prints {}

默认情况下,全局是什么意思?这取决于你在哪里定义它们。变量只有在任何函数或类之外定义时才是全局变量。不总是真的。如果在函数中声明,则它是局部的。如果必须修改非局部变量,则有关键字
非局部
全局
。您在任何函数之外声明了变量,因此它们是全局变量。它们应该是本地的什么?