首页 > 解决方案 > 创建全局变量与在函数之间传递变量

问题描述

我正在遍历一个列表,对于列表中的每一行,我需要调用一个函数来读取该行并对其进行操作。我应该使列表成为全局变量还是应该将每一行传递给不同的函数?

函数 a,b,c 不修改列表的行,它们只是读取值并做出一些决定。

选项 A

def iterate_over_list():
    list_ = [ 1,2,3 ]
    for each_row in list_:
        func_a(each_row)
        func_b(each_row)
        func_c(each_row)

def func_a(each_row):
    read_the_row__value_and_make_a_decision

def func_b(each_row):
    read_the_row__value_and_make_a_decision

def func_c(each_row):
    read_the_row__value_and_make_a_decision

选项 B

global list_

def iterate_over_list():
    list_ = [ 1,2,3 ]
    for each_row in list_:
        func_a()
        func_b()
        func_c()

def func_a():
    read_the_row__value_and_make_a_decision

def func_b():
    read_the_row__value_and_make_a_decision

def func_c():
    read_the_row__value_and_make_a_decision

标签: pythonscope

解决方案


正如@S3DEV 所指出的,除非绝对必要,否则应避免使用全局变量。

假设我正确地关注了您,并且每个函数只需要访问该行而不是整个列表,那么选项 A 是非常受欢迎的。

如果你想让每个函数都可以访问list_,你可以在定义iterate_over_listlist_定义里面的函数。


推荐阅读