开发者社区> 问答> 正文

当变量在函数内部更改时如何更新字典值

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

展开
收起
is大龙 2020-03-23 21:00:51 418 0
1 条回答
写回答
取消 提交回答
  • 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

    2020-03-23 21:00:57
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
用计算和数据去改变整个世界 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载