在Python中使用global关键字

时间:2019-04-05 12:24:08

标签: 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, 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)

有人可以让我知道我的理解是否错误吗?global关键字应该用于什么?

1 个答案:

答案 0 :(得分:5)

Python

  • 在本地范围内写入
  • 从本地范围读取,如果失败,则从全局范围读取

因此,如果要分配全局results变量,则必须使用global results来指定您的意思是全局变量。

但是,由于您 read results,并且函数中不存在此类变量,因此将查询全局变量。

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