首页 > 解决方案 > 当变量在函数内部发生变化时如何更新字典值

问题描述

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}

如何在字典值中反映变量的变化?

标签: pythonpython-3.x

解决方案


所以你dict_1['One'] = x = 1重新分配两个?没有什么神奇的方法可以做到这一点。一旦dict_1被构造,它与 name 没有进一步的关系x,并且对象x引用 (an int) 是不可变的,所以你不能做任何事情来利用xdict_1['One']成为同一个对象的别名(最初)。

有各种糟糕的解决方案来做这样的事情(使dict_1a的值lambda返回x,创建一个用当前dict_1构造的函数,使用模块级别而不是定义这样加载得到一个新构造的 等),但是所有这些都需要一些额外的步骤,这些步骤会导致无法按书面方式工作,或无法持久,或两者兼而有之。dictx__getattr__dict_1dict_1dictprint('x is: ', x, '| dict_1 is :', dict_1)dict_1


推荐阅读