孩负范 发表于 2025-9-26 11:53:31

Python中变量之间赋值的理解

1.问题描述

在Python项目中,有一个这样的需求:
一个文件a需要负责提供一个函数,返回该文件中一个全局变量value,类似与get_value()接口
在另一个文件b中,创建一个变量temp=get_value(),去取a文件中的value,而且希望后续a文件中对value的修改,会直接影响到b文件中的temp
例如:在a文件中,有个函数叫set_value(),里面执行value = Myclass(),希望temp也受到修改影响,变为指向新的MyClass
# a.py

value = MyClass()

def get_value():
return value

def set_value():
value = MyClass()# b.py
import a

temp = get_value()
print(temp)
set_value()
print(temp)但上面这样操作,显然不会满足需求。
2.Python中变量的赋值逻辑

对于等号右方为非变量名时,如:value = "string" 或者 value = 10 或者 value = MyClass()
均可以理解成:value指向了一块空间a,里面存放着右侧这些数据.(value为该指针名字)

当等号右方为变量名时,如 b = value,
可以理解成:一个新的指针b,指向了value所指向的那块空间

所以,理解了上述赋值的区别后,1中的情况就很好解释了:
temp = get_value()时,temp指针指向了value所指向的那块空间

此时调用set_value,value又重新指向了另一块新的MyClass空间,但temp依旧指向原来的MyClass

所以value的修改并不会影响temp,故无法满足需求。
3.解决方案

很明显,上述实现的阻碍在于,value更新时,会指向新的空间,导致外界的temp无法及时同步更新。
因此我们考虑让value降低一层,包裹在更高一层的容器中
有一个list数据a, a =

我们get这个list a,get_a(), temp = get_a()

按照上述的理解,所有的value实际上都是一个指针,指向了赋值给自己的空间

如果此时set_value,实际上是修改a=MyClass(),由于value被a容器所管理,即使它指向了新的地方,也可以通过a直接访问,又temp指向的本身是容器a,故temp也可以直接访问到新的value

故我们目的达到,当value被修改时,我们可以通过temp取到更新后的value值
Ps:最主要的是和C++中的赋值区分开,不能单纯用C++的引用去理解

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

驼娑 发表于 2025-12-3 01:34:16

感谢分享

敛饺乖 发表于 2025-12-9 03:09:34

这个好,看起来很实用

洪思思 发表于 2026-1-9 11:56:35

前排留名,哈哈哈

廖雯华 发表于 2026-1-13 18:13:20

这个好,看起来很实用

揉幽递 发表于 2026-1-15 14:11:26

谢谢分享,试用一下

康器 发表于 2026-1-18 23:11:26

谢谢分享,辛苦了

荪俗 发表于 2026-1-20 21:17:50

很好很强大我过来先占个楼 待编辑

氛疵 发表于 2026-1-22 00:27:56

这个有用。

馏栩梓 发表于 2026-1-26 08:28:12

感谢分享,下载保存了,貌似很强大

勉欤铅 发表于 2026-1-27 07:19:15

感谢发布原创作品,程序园因你更精彩

匡菲 发表于 2026-1-27 07:55:57

很好很强大我过来先占个楼 待编辑

印萍 发表于 2026-1-28 03:03:11

感谢分享,下载保存了,貌似很强大

赫连如冰 发表于 2026-1-30 15:46:09

感谢分享

零幸 发表于 2026-2-7 09:23:22

懂技术并乐意极积无私分享的人越来越少。珍惜

挫莉虻 发表于 2026-2-7 09:23:34

用心讨论,共获提升!

碣滥 发表于 2026-2-7 23:39:21

这个好,看起来很实用

柄利 发表于 2026-2-8 01:19:17

新版吗?好像是停更了吧。

洪势 发表于 2026-2-8 02:32:42

懂技术并乐意极积无私分享的人越来越少。珍惜

盖彗云 发表于 2026-2-9 03:51:56

收藏一下   不知道什么时候能用到
页: [1] 2
查看完整版本: Python中变量之间赋值的理解