Python 当函数中的变量发生变化时,如何更新字典值

Python 当函数中的变量发生变化时,如何更新字典值,python,python-3.x,Python,Python 3.x,输出为: x = 2 dict_1 = {'One': x} def my_fun(): global x x = 1 my_fun() print('x is: ', x, '| dict_1 is :', dict_1) 如何在字典值中反映变量的变化?是否将dict_1['One']=x=1,以便重新分配两者?没有什么神奇的方法可以让这一切发生;一旦构造了dict_1,它就与名称x没有进一步的关系,并且对象x引用的int是不可变的,因此您无法利用x和dict_1['O

输出为:

x = 2
dict_1 = {'One': x}

def my_fun():
    global x
    x = 1

my_fun()

print('x is: ', x, '| dict_1 is :', dict_1)
如何在字典值中反映变量的变化?

是否将dict_1['One']=x=1,以便重新分配两者?没有什么神奇的方法可以让这一切发生;一旦构造了dict_1,它就与名称x没有进一步的关系,并且对象x引用的int是不可变的,因此您无法利用x和dict_1['One']最初是同一对象的别名


有各种可怕的解决方案可以这样做,使dict_1的值成为一个返回x的lambda,使dict_1成为一个用当前x构造dict的函数,使用模块级u getattr_uuuuuu,而不是定义dict_1,这样加载dict_1就会得到一个新构造的dict,等等。,但所有这些都需要一些额外的步骤,以使打印“x是:”,x,“| dict_1是:”,dict_1不能像书面形式那样工作,或者使dict_1不能持久,或者两者都不能持久。

我不确定你的问题中有什么限制,或者你到底想实现什么,但解决问题的一种方法是调整代码,使其看起来像这样:

x is:  1 | dict_1 is : {'One': 2}

我想大多数人都会这样做。关键字“global”很少合适

x=2 dict_1={'One':x} 定义my_基金会: 字典['One']=1 返回字典 dict_1=我的资金 x=主语1[“一”] 打印“x是:”,x,“| dict_1是:”,dict_1
您希望数据源具有权威性。因此,应该有一个数据结构来保存值,然后代码转到该数据结构以获取值。为了方便起见,您可以将它们放在变量或其他数据结构中。

这是您的实际用例吗?你真的需要dict_1存在才能称我为乐趣吗?我的乐趣修改了一个全局变量有什么原因吗?这通常是一种反模式。my_func是否知道dict_1存在并依赖于它,或者它们是独立的/模块化的?您是否需要dict_1在调用my_fun之前和之后都是同一个对象,或者是否可以创建新的dict_1?x是一个接受用户输入的变量。有几个函数从dict_1获取字典值运行。我希望字典中“one”的值总是指x,并且x会随着用户的输入而改变。总之,我想在dict_1中瞬间反映x的变化
global x, dict_1
x = 2
dict_1 = {'One': x}

def my_fun():
    dict_1['One'] = x

x = 1
my_fun()
print('x is: ', x, '| dict_1 is :', dict_1)