#!/usr/bin/env python
def modify_dict():
d['two'] = 2
d = {'one':1}
modify_dict()
print d
I get
$ ./globaltest.py
{'two': 2, 'one': 1}
我本来希望只看到{'one':1}
因为 d 没有在函数内声明为全局的。为什么 d 得到两个键值对?
Python 搜索变量是基于LEGB
rule:
Local, Enclosing functions, Global, Built-in
当您调用函数时,它会尝试查找名为 d 的变量,并且会在全局范围内查找,因为您在调用函数之前创建了 d 。由于 d 是可变的,因此它会被更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)