gpt4 book ai didi

Python 混淆函数引用

转载 作者:太空狗 更新时间:2023-10-29 22:26:13 25 4
gpt4 key购买 nike

任何人都可以向我解释为什么 ab 下的两个函数表现不同。函数 a 在本地更改 namesb 更改实际对象。

我在哪里可以找到此行为的正确文档?

def a(names):
names = ['Fred', 'George', 'Bill']

def b(names):
names.append('Bill')

first_names = ['Fred', 'George']

print "before calling any function",first_names
a(first_names)
print "after calling a",first_names
b(first_names)
print "after calling b",first_names

输出:

before calling any function ['Fred', 'George']
after calling a ['Fred', 'George']
after calling b ['Fred', 'George', 'Bill']

最佳答案

在函数内部给参数赋值不影响传递的参数。它只是使局部变量引用新对象。

同时,list.append 就地修改列表。

如果你想改变函数内部的列表,你可以使用切片赋值:

def a(names):
names[:] = ['Fred', 'George', 'Bill']

关于Python 混淆函数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25226421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com