为什么一个变量在使用它定义函数之后就可以被定义?

2024-06-09 09:59:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的问题:

为什么这样做?你知道吗

def print_list():
    for student in student_list:
        print(student)

student_list = ["Simon", "Mal", "River", "Zoe", "Jane", "Kaylee", "Hoban"]
print_list()

我了解函数和参数的方式是,函数print_list()不应该识别student_list,因为我没有将它指定为函数的参数。你知道吗


Tags: 函数infor参数defstudentlistmal
3条回答

我的理解是你的程序有三个部分

  1. 定义打印列表()
  2. 初始化学生列表(全局变量)
  3. 调用打印列表()

调用print\u list()时,学生列表已经存在。此外,在函数中,还可以搜索变量(student\ u list)的作用域: 1局部作用域(它将失败,因为您没有定义它,只引用它) 2全局范围(它将成功,因为它刚刚初始化

在Python中,变量是在赋值时创建的。在您的例子中,student_list是在全局范围内赋值的,因此它是一个全局变量。(全局范围是不在函数中的内容。)

当Python在一个不是局部变量的函数中遇到一个变量时(也就是说,它没有作为参数传入,也没有在函数中赋值),它会自动在全局范围中查找该变量。你知道吗

如果您想知道global语句的目的是什么,因为全局变量在函数中已经是可见的:global允许您重新分配一个全局变量,并使它全局生效。例如:

def b():
    global a
    a = 5

a = 4
print(a)  # prints 4
b()
print(a)  # prints 5

在大多数情况下,您不需要global语句,我建议您不要使用它,尤其是在您对Python有更多的经验之前。(尽管如此,即使是有经验的Python程序员也不会经常使用global

在调用print_list()时,已经将student_list定义为全局变量。你知道吗

相关问题 更多 >