x = 2 dict_1 = {'One': x}
def my_fun():
global x
x = 1
my_fun()
print('x is: ', x, '| dict_1 is :', dict_1)
输出为:
x is: 1 | dict_1 is : {'One': 2}
如何反映字典值中变量的变化?
问题来源:stackoverflow
dict_1 ['One'] = x = 1
是否都重新分配了?没有实现这一目标的神奇方法。一旦构造了dict_1,它就不再与名称x关联,并且对象x指向的对象(一个int)是不可变的,因此您无法采取任何措施来利用x的优势和dict_1 ['One']`是同一对象的别名(最初)。
有各种各样可怕的解决方案来执行类似的操作(使dict_1的值成为返回x的lambda,使dict_1的函数使用当前x构造dict,模块级别的getattr而不是定义dict_1,这样加载dict_1会得到一个新构建的dict等,但是它们都需要一些额外的步骤才能使print('x is:',x ,'| dict_1是:',dict_1)不能按书面要求工作,或不能使dict_1
持久存在,或两者兼而有之。
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。