在函数的全局列表上使用 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)