Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带字典的变量作用域_Python - Fatal编程技术网

Python 带字典的变量作用域

Python 带字典的变量作用域,python,Python,执行时不会出错: def myfunction(): global a_dict a_dict['s'] = 'whatevs' b_dict['s'] = 'lalala' a_dict = b_dict a_dict = {'s':[], 'm':[]} b_dict = {'s':[], 'm':[]} myfunction() 为什么在不向函数中添加global b_dict的情况下不会抛出错误?因为我正在编写这两个词典 如果我注释掉global a_

执行时不会出错:

def myfunction():
    global a_dict
    a_dict['s'] = 'whatevs'
    b_dict['s'] = 'lalala'
    a_dict = b_dict

a_dict = {'s':[], 'm':[]}
b_dict = {'s':[], 'm':[]}
myfunction()
为什么在不向函数中添加
global b_dict
的情况下不会抛出错误?因为我正在编写这两个词典


如果我注释掉
global a_dict
(“'a_dict'在赋值之前被引用”)——这当然是正确的-正如我所预料的那样。

在函数中将变量声明为全局变量的事实允许您在该函数之外使用变量。如果其中没有声明变量b,Python将假定它是在函数调用之前声明的全局变量。

当您想要分配给全局名称
foo
时,您只需要
global foo
。您没有分配给
b_dict
;您正在分配给它的一个键,相当于
b_dict.\uuuu setitem_uuu('s','lalala')
b_dict
的两种用法都将其视为自由变量,因为没有定义名为
b_dict
的局部变量


自由变量的值取自定义它的最近封闭范围(在本例中为全局范围)。

正确拼写“I”可以减少被否决的机会。