在函数的全局列表上使用 append() 方法 (Python)
Using append() method on a global list in a function (Python)
我在理解如何在函数的局部范围内编辑全局变量时遇到问题,请参阅我提供的两个示例代码,它们相互对比:
示例 1
def function():
x[0] = True
x = [False] # global variable
function()
print(x) # True
示例 2
def function():
z = True
z = False # global variable
function()
print(z) # False
我的理解是全局变量不能在局部范围内(在函数内)编辑,除非它们被显式全局调用,即(全局“variable_name”),但是示例 1 表明在处理使用列表并使用 append 方法,我实际上可以编辑真正的全局变量,而不必使用显式全局术语调用它。在示例 2 中,我无法重新分配与示例 1 相反的全局变量。请解释为什么会这样,append 方法或列表是否特别与 global/local 范围规则交互?
列表是可变的,所以虽然不能编辑变量(例如分配给另一个列表),但列表的内容可能会被修改,变量仍将指向同一个列表,因此变量未被修改。
尝试:
def function():
x = [True]
x = [False] # global variable
function()
print(x)
我在理解如何在函数的局部范围内编辑全局变量时遇到问题,请参阅我提供的两个示例代码,它们相互对比:
示例 1
def function():
x[0] = True
x = [False] # global variable
function()
print(x) # True
示例 2
def function():
z = True
z = False # global variable
function()
print(z) # False
我的理解是全局变量不能在局部范围内(在函数内)编辑,除非它们被显式全局调用,即(全局“variable_name”),但是示例 1 表明在处理使用列表并使用 append 方法,我实际上可以编辑真正的全局变量,而不必使用显式全局术语调用它。在示例 2 中,我无法重新分配与示例 1 相反的全局变量。请解释为什么会这样,append 方法或列表是否特别与 global/local 范围规则交互?
列表是可变的,所以虽然不能编辑变量(例如分配给另一个列表),但列表的内容可能会被修改,变量仍将指向同一个列表,因此变量未被修改。
尝试:
def function():
x = [True]
x = [False] # global variable
function()
print(x)