函数中使用的全局变量是否需要在 def 块之前定义?

Does global variable used in a function need to be defined before the def block?

我必须承认我没想到下面的代码可以工作(来自我同事的代码示例):

def foo():
    li.append(3)
li = [1, 2]
foo()
print(li) # gives [1, 2, 3]

我的问题是:

ps。 Python 3.6.1 用于列出的代码示例。

  1. 由于列表是在调用 foo() 之前定义的,因此没有错误。
  2. global 关键字仅在我们要进行赋值或更改全局变量时才需要。访问方法或打印变量不需要 global 关键字
  1. 全局关键字是允许用户修改当前范围之外的变量的关键字。

    全局关键字规则:

    • 如果变量在函数的任何位置赋值 body,除非明确声明为,否则假定为本地 全球。
    • 仅在函数内部引用的变量是
      隐式全局。
    • 我们使用 global 关键字在 功能。
    • 没有必要在函数外使用 global 关键字。

您的代码,您没有更改或分配 'li' 值

2.Here 列表是在调用 foo() 之前定义的,所以它可以工作 fine.suppose 如果你在定义 li 之前调用 foo(),它会抛出类似 NameError: name 'li' 未定义