python - 当变量在函数内部发生变化时如何更新字典值
问题描述
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}
如何在字典值中反映变量的变化?
解决方案
所以你dict_1['One'] = x = 1
重新分配两个?没有什么神奇的方法可以做到这一点。一旦dict_1
被构造,它与 name 没有进一步的关系x
,并且对象x
引用 (an int
) 是不可变的,所以你不能做任何事情来利用x
和dict_1['One']
成为同一个对象的别名(最初)。
有各种糟糕的解决方案来做这样的事情(使dict_1
a的值lambda
返回x
,创建一个用当前dict_1
构造的函数,使用模块级别而不是定义这样加载得到一个新构造的 等),但是所有这些都需要一些额外的步骤,这些步骤会导致无法按书面方式工作,或无法持久,或两者兼而有之。dict
x
__getattr__
dict_1
dict_1
dict
print('x is: ', x, '| dict_1 is :', dict_1)
dict_1
推荐阅读
- c++ - 动态改变队列数组的大小
- php - 没有 AppEngine 的 Google 云存储上的 PHP 文件
- wordpress - 如何正确映射来自 Woocommerce 和 Quickbooks 的两个现有项目数据?
- react-native - 为什么 React Navigation 事件“willFocus”没有执行?
- oracle - “如何在不执行 impdp 的情况下恢复 EXPDP 后删除的架构?
- c++ - 通过套接字将文件数据发送到服务器时,我得到了一些垃圾值?为什么?
- angular - 在变量中添加 HTML 标记,其中包含从 firestore 返回的数据
- ruby-on-rails - Rails 5 Ruby 2.5.3 If 语句基于月份范围
- java - Swagger with Programmatic REST API(Jersey)
- tortoisegit - TortoiseGit:为什么我的一些分支没有修订号?