变量没有正确更新,似乎每次运行一行代码

时间:2016-01-08 10:17:10

标签: python python-3.x

我的第一行代码将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")

1 个答案:

答案 0 :(得分:1)

如果h不是无,则merge_to_hierarchy只打印“没有发生”;这意味着它返回None。由于您在调用代码中将h设置为该函数的结果,这意味着该函数具有始终将h设置为None的效果(如果它还不是None)。

您应该始终从该函数返回h的值。