【发布时间】:2015-10-04 19:13:03
【问题描述】:
首先,我明白我可以使用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会自动尝试匹配全局变量?
【问题讨论】:
-
您的问题到底是什么?
nums =是一个本地赋值,与外部范围无关,而在其他情况下,您正在修改同一个对象。
标签: python function global-variables