您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

了解python的名称绑定

了解python的名称绑定

是的,您基本上是正确的。在Python中,可以将变量名视为对值的引用(尽管它的工作原理类似,但不是C ++引用,更多的是声明它引用了某种东西)。

顺便说一句,Python方式与C 非常相似,C int &b = a只是意味着ab引用相同的值。

或C int *pb = &a,其含义a*pb引用的是相同的值,但是带来了所有尚未使C接受大脑弯曲的人们带来的困惑:-)

在Python中为变量名称赋值会使名称引用 不同的 值,它永远不会复制值本身:

a = 7   # Create "7", make "a" refer to it.
b = a   # make "b" refer to  the "7" as well.
a = 42  # Create "42", make "a" refer to it, b still refers to the "7".

(我说的是“创建”,但不一定如此-如果某个位置已经存在某个值,则可以重复使用它)。

在类似C的语言中,第二条语句b = a创建一个 值,将“ 7”复制到其中,然后命名为b。在Python中,它仅以ab引用相同的 值结束。

在基础数据是不可变的(无法更改)的地方,通常会使Python看起来与C的行为相同。

但是,对于 可变 数据(与在C中使用指针或在C ++中使用引用相同),人们有时会感到惊讶,因为他们没有意识到背后的价值可能是共享的:

>>> a = [1,2,3] ; print a
[1, 2, 3]

>>> b = a ; print b
[1, 2, 3]

>>> a[1] = 42 ; print a
[1, 42, 3]

>>> print b   #WTH?
[1, 42, 3]

有一些方法可以获取值的 独立 副本,例如:

b = a[:]
b = [item for item in a]

(这将适用于一个级别,其中b = a适用于零级别),或者,deepcopy如果您想在完全 唯一的情况下使用,则可将其用于任何必要级别。

python 2022/1/1 18:49:42 有365人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶