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

なぜ辞書の一つのグローバル変数を返すと,呼び出すと変数が覆われるのかという疑問に気づきました. #という3行は,理屈的には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)