如何访问全局变量

时间:2019-05-27 05:24:18

标签: 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']

3 个答案:

答案 0 :(得分:5)

为什么不使用以下内容,而不是使用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)

答案 1 :(得分:2)

如果您确实需要使用#path of file import os with open('Tree.txt', 'r') as t: for line in t: readline(.{Level}. {FolderName}) if Level == '0' os.mkdir(FolderName) else if Level == '1' # go down and os.mkdir(FolderName) 变量,则以下是声明global的更好方法

global names

答案 2 :(得分:0)

因为names对于cp_identifier是全局的,但对于array_dec而言是全局的。在后者中,names是一个局部变量,在调用后会被丢弃。

但是,请尽可能避免使用全局变量。您可以只从names返回array_dec数组。