在Python中使用全局关键字
我有一个简单的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,
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
关键字的信息,但我认为这是可选的