首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python赋值还是变量绑定?

Python赋值还是变量绑定?
EN

Stack Overflow用户
提问于 2014-10-24 08:10:59
回答 2查看 349关注 0票数 0

X=3 X=4

第二行是赋值语句还是新变量绑定?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-24 08:49:23

在(非常基本的)C术语中,当将新值赋值给变量时,会发生这样的情况:

代码语言:javascript
复制
x = malloc(some object struct)

如果我正确地解释了你的问题,你会问当你重新分配x时会发生什么--这是:

代码语言:javascript
复制
A. *x = some other value

或者这个:

代码语言:javascript
复制
B. x = malloc(something else)

正确的答案是B,因为变量指向的对象也可以引用到其他地方,而更改它可能会以不可预测的方式影响程序的其他部分。因此,Python从旧结构中取消变量名(减少它的“引用计数器”),分配一个新结构并将名称绑定到这个新结构。一旦结构的引用计数器变为零,它就变成垃圾,并在某个时候被释放。

当然,这个工作流在内部是高度优化的,细节可能会根据对象本身、特定解释器(CPython、Jython等)以及不同版本的不同而有所不同。作为userland python程序员,我们只能保证

代码语言:javascript
复制
x = old_object

然后

代码语言:javascript
复制
x = new_object

不会以任何方式影响"old_object“。

票数 3
EN

Stack Overflow用户

发布于 2014-10-24 08:12:56

没有什么不同。在Python中为名称分配是相同的,不管名称是否已经存在。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26543890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档