我的第一行代码将h设置为None。然后当我第一次进入for循环时,h会在merge_to_hierarchy方法中更新。但是当我第二次进入循环时,我的h又被设置为None。如何正确更新我的h变量或确保我的第一行代码只运行一次?
h = get_hierarchy((script_data.data_version, script_data.elt_type_data[0]))
for fle in glob.glob('./' + script_data.folder_with_csvs + '/*'):
[region, peril, subregion] = (re.sub('.csv', '', (re.sub('./' + script_data.folder_with_csvs + '/', '', fle)))).split("_")
h = merge_to_hierarchy(h, peril, region, subregion)
print(h)
change_file(str(fle))
def change_file(filename):
with open(filename) as f:
r = csv.reader(f)
next(r)
def merge_to_hierarchy(h, peril, region, subregion):
if h is None:
h = Hierarchy(script_data.data_version, script_data.elt_type_data[0], [
PerilRegions(peril, region, Resolutions(script_data.subregion_resolution_data[0], [subregion]),
script_data.subperils, script_data.lobs)])
return h.json()
else:
print("Nothing happened")
答案 0 :(得分:1)
如果h
不是无,则merge_to_hierarchy
只打印“没有发生”;这意味着它返回None。由于您在调用代码中将h
设置为该函数的结果,这意味着该函数具有始终将h设置为None的效果(如果它还不是None)。
您应该始终从该函数返回h
的值。