【发布时间】:2016-06-06 00:32:44
【问题描述】:
我是社区的新手,感谢您的任何回复。我最近学习了 Python,并尝试编写一个函数来深度复制一些对象。
import copy
class node:
def __init__(self,x):
self.x=x
a=node(8)
d=node(10)
c=copy.deepcopy(d)
def copyNode(a):
c=copy.deepcopy(a)
copyNode(a)
print c.x
在上面我尝试使用copyNode 函数将节点a 深度复制到c。但是,调用这个方法后,打印出来的是10,这意味着该函数不起作用。知道我哪里做错了吗?谢谢!
【问题讨论】:
-
可变范围。您在函数内分配给
c,但这与全局范围内的c不同。您应该从您的函数中复制return对象并将其分配到那里。 -
感谢您的帮助!我添加了 global 关键字,它可以工作!再次感谢您!
-
不要使用
global,使用return!c = copyNode(a) -
Cody:一般来说你应该避免使用 global 关键字。当然,它有效,而且它是有目的的。但是,随着程序的增长和代码变得越来越复杂,使用全局变量(和可变状态)变得越来越危险和成问题。现在,每当您使用“全局”...考虑如何将该状态包装到一个对象类中并考虑使用它。
标签: python