Type/to search
3
Follow
0
Followers
파이썬 전역 변수에 문제가 있습니다. 해결해 주세요.
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)