Type/to search
3
Follow
0
Followers
У меня проблема с глобальными переменными python. Помогите мне решить ее.
Help
Created 2021-09-08 14:20:01  Updated 2021-09-08 15:09:44
 6
 1198

Я обнаружил проблему, почему я возвращаю глобальную переменную словаря, а когда я вызываю ее, она покрывается, ну, код ниже, три строки с # должны были быть напечатаны как 1, 2, 3, но на самом деле они были напечатаны как 3, 3, 3, не совсем понятно. Это проблема, которую я обнаружил в обратной проверке, и все результаты были напечатаны одинаково, а затем шаг за шагом я нашел источник здесь.
def fun(a):
dict_zz['one'] = a
return dict_zz
def main():
params()
dict_zz_15min = fun(1)
dict_zz_1h = fun(2)
dict_zz_4h = fun(3)
print(dict_zz_15min) #
print(dict_zz_1h) #
print(dict_zz_4h) #

def params():
global dict_zz
dict_zz = {}
main()

Почему я напечатал это так?
{'one': 3}
{'one': 3}
{'one': 3}

Related Recommendations
Comment
All comments (6)

    你用的同一个key,都覆盖了.你学习下python的基础

    5 years ago

    你这话有点瞧不起人了啊,什么算python基础呢?我之前在聚宽就用python写策略了....

    5 years ago

    def fun(a):

    dict_zz['one'] = a
    return dict_zz
    def main():
    params()
    dict_zz_15min = fun(1)
    print(dict_zz_15min)
    dict_zz_1h = fun(2)
    print(dict_zz_1h)
    dict_zz_4h = fun(3)
    print(dict_zz_4h) #

    def params():
    global dict_zz
    dict_zz = {}
    main()

    5 years ago

    你直接说字典是浅拷贝我就明白了......我的锅,学了这么久python这个都没搞懂

    5 years ago

    不是key的问题吧,我全局变量换成局部变量就没问题的啊,像这样key不也覆盖的吗?
    def fun(a):
    dict_zz = {}
    dict_zz['one'] = a
    return dict_zz
    def main():
    dict_zz_15min = fun(1)
    dict_zz_1h = fun(2)
    dict_zz_4h = fun(3)
    print(dict_zz_15min)
    print(dict_zz_1h)
    print(dict_zz_4h)
    main()

    5 years ago

    不是key的问题吧,我全局变量换成局部变量就没问题的啊

    5 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)