在Python中使用全局关键字

在Python中使用全局关键字,python,Python,我有一个简单的Python脚本,它只需将列表中的两个数字相乘,然后将结果发送给另一个函数,该函数随后将它们附加到列表中。以下是相同的代码: results = [] def check_results(result): results.append(result) def multiply(x, y): return x * y if __name__ == "__main__": numbers = [[1,1], [2,2], [3,3]] for x,

我有一个简单的Python脚本,它只需将列表中的两个数字相乘,然后将结果发送给另一个函数,该函数随后将它们附加到列表中。以下是相同的代码:

results = []

def check_results(result):
    results.append(result)

def multiply(x, y):
    return x * y

if __name__ == "__main__":
    numbers = [[1,1], [2,2], [3,3]]
    for x, y in numbers:
        check_results(multiply(x, y))
    print(results)
我的问题是,在将它们添加到超出其范围的结果列表之前,我们是否应该在check_results函数中使用global关键字

换句话说,整个代码不应该是这样的吗

results = []

def check_results(result):
    global results
    results.append(result)

def multiply(x, y):
    return x * y

if __name__ == "__main__":
    numbers = [[1,1], [2,2], [3,3]]
    for x, y in numbers:
        check_results(multiply(x, y))
    print(results)
有人能告诉我我的理解是否有误,全局关键字应该用于什么吗?

Python

  • 写入本地范围
  • 从本地作用域读取,如果失败,则从全局作用域读取
因此,如果要分配全局
结果
变量,则必须使用
全局结果
,以指定您指的是全局变量

但是,由于您读取了
结果
,并且函数中不存在此类变量,因此会查找全局变量


请注意,尽管您附加到
结果
引用的列表中,但您不会更改实际的
结果
变量本身,因此您所做的操作不被视为写入。

否,
结果
已在全局范围内,
global
关键字用于定义函数局部变量到全局范围(在其他函数中可用)。如果这个问题是关于样式的,我将使用
results
作为
check\u results
的附加参数(或使用面向对象的方法)。您可以补充说,使用
global
关键字make Python从一个或多个函数(本地范围)写入全局范围,以重用最初未在全局范围中设置的变量scope@Nenri:说得好,但我不想超出原始问题的范围。我认为它在范围之内(好的双关语:p)因为他问了
global
的用法,为了完成回答,你可以添加
nonlocal
local
关键字的信息,但我认为这是可选的