python - Python中global关键字的使用

标签 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 关键字应该用来做什么吗?

最佳答案

Python

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

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

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

请注意,虽然您附加到 results 引用的列表,但您并没有更改实际的 results 变量本身,因此您所做的不被视为写入.

关于python - Python中global关键字的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55535322/

相关文章:

python - 如何找到用于查找数组中缺失数字的数学表达式

python - 在 Python 中,什么时候和什么时候不使用带有 multiprocessing.Pool 的 map() ?输入值较大的情况

使用延迟的 Python 扭曲异步写入

python - 根据url从WARC文件中检索记录

python - 如何使用 python 和 XML-RPC 获取 Bugzilla 的评论和附件详细信息?

python - 只能在 OSX 上的 rpy2 中导入一些包,其他包会出现 SIGSEGV 错误

python - 有没有办法使用 XlsxWriter 对包含文本的单元格进行着色?

python - 注销后Django重新加载并重新登录

python - 使用带有多个映射函数的 pandas applymap()

python - 我想要一个用户ID的所有推文,而不是Python中twitter的最新200条推文