class Test:
def c(self, args):
print args
def b(self, args):
args.append('d')
def a(self):
args = ['a', 'b', 'c']
self.b(args)
self.c(args)
Test().a()
为什么不打印['a','b','c']?
答案 0 :(得分:2)
当你将一个列表传递给一个函数时,你实际上是在向它传递一个指向列表的指针而不是列表的副本。因此b
会向原始args
附加一个值,而不是它自己的本地副本。
答案 1 :(得分:1)
您传递给方法b
和c
的参数是对列表args
的引用,而不是它的副本。在方法b
中,您将附加到在方法a
中创建的相同列表。
有关Python中参数传递的更详细说明,请参阅this answer。