从以下代码中,我希望名称输出包含一个从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']
答案 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
数组。