gpt4 book ai didi

python - 在函数内修改全局列表

转载 作者:太空狗 更新时间:2023-10-29 21:26:16 27 4
gpt4 key购买 nike

首先,我明白我可以使用global 语句来访问全局变量。但不知何故,我能够在没有 global 的情况下修改全局列表,如下所示:

def func1(nums):
nums = [4,5,6]

nums = [1,2,3]
func1(nums)
print nums # print [1,2,3]

def func2(nums):
nums[0] = 4
nums[1] = 5
nums[2] = 6

nums = [1,2,3]
func2(nums)
print nums # print [4,5,6]

在尝试 func2 之后,我意识到如果指定索引,我总是可以在函数中访问全局列表:

def func3(nums):
nums[:] = [4,5,6]

nums = [1,2,3]
func3(nums)
print nums # print [4,5,6]

是不是因为如果在定义之前使用函数变量,Python 会自动尝试匹配全局变量?

最佳答案

I understand that I can use global statement to access global variables

你的理解是错误的。只要您没有同名的局部变量,就可以随时访问 全局变量。当您要更改变量名所指的对象时,您只需要 global 语句。在您的 func2 中,您没有这样做;您只是在更改对象的内容。 nums 仍然引用同一个列表。

关于python - 在函数内修改全局列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31435603/

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