如何访问全局变量

2024-03-29 11:09:09 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我希望名称的输出包含一个从csv文件的列中获取的名称数组。当函数运行时,数组保持为空。为什么?你知道吗

def cp_identifier():
    global names
    names = []
    array_dec()
    print(names)

def array_dec():
    with open("card_list_currents.csv", "r") as file:
        card_list_table = csv.DictReader(file, delimiter=',')
        for row in card_list_table:
            names.append(row["Card Name"])

电流输出:

[]

预期输出:

['Card Name', 'Card Name', ... , 'Card Name']

Tags: csv代码name名称namesdeftable数组
3条回答

为什么不使用下面这样的东西,而不是使用global variable

def cp_identifier():
    names = array_dec()
    print(names)
    return names

def array_dec():
    names = []
    with open("card_list_currents.csv", "r") as file:
        card_list_table = csv.DictReader(file, delimiter=',')

        for row in card_list_table:
            names.append(row["Card Name"])
    return names
if __name__ == "__main__": 
    names = cp_identifier()
    print(names)

如果您真的需要使用global变量,那么下面是声明global names的更好方法

global names

def cp_identifier():
    #global names
    names = []
    array_dec()
    print(names)

def array_dec():
    with open("card_list_currents.csv", "r") as file:
        card_list_table = csv.DictReader(file, delimiter=',')
        for row in card_list_table:
            names.append(row["Card Name"])

因为namescp_identifier是全局的,但对array_dec不是全局的。在后者中,names是一个局部变量,在调用之后被丢弃。你知道吗

但是,尽可能避免使用globals。您可以从array_dec返回names数组。你知道吗

相关问题 更多 >