파이썬의 글로벌 변수는 문제를 일으켰습니다.

저자:토니233, 2021-09-08 14:20:01, 업데이트: 2021-09-08 15:09:44

저는 왜 제가 사전 범변수를 반환하고, 다시 호출할 때 변수가 덮여지는지 문제를 발견했습니다. 코드가 아래쪽에 있고, #라는 세 줄의 코드에서 1,2,3를 인쇄해야하지만 실제로는 3,3,3를 인쇄하는 것은 이해가 되지 않았습니다. 이것은 제가 다시 테스트를 통해 발견한 문제입니다. 결과는 모두 동일합니다. def fun ((a): dict_zz[ ] = 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) #

def 패람스 (((): 글로벌 dict_zz dict_zz = {} 주요 (()

왜 제가 이런 식으로 인쇄한 걸까요? : 3 : 3 : 3


더 많은

초목같은 키를 사용해서 모든 것을 덮고 있습니다.

토니233당신은 바로 사전이 어졌다고 말했고, 나는 그것을 이해했습니다. 내 어머니, 파이썬을 오랫동안 배웠지만, 아무것도 이해하지 못했습니다.

초목def fun ((a): dict_zz['one'] = a dict_zz 를 반환 def main ((): 파람스 ((() dict_zz_15min = 재미있어요 print ((dict_zz_15min) ] dict_zz_1h = 재미(2) print ((dict_zz_1h) ] dict_zz_4h = 재미 ((3) print ((dict_zz_4h) # def 패람스 (((): 글로벌 dict_zz dict_zz = {} 주요 (()

토니233이 말은 좀 이상해 보이네요. 파이썬의 기본은 무엇일까요?

토니233키가 아니라, 내 범변수를 로컬 변수로 바꾸면 괜찮을거야, 키가 덮여 있지 않나? 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 (주))

토니233키가 아니라, 전적 변수를 로컬 변수로 바꾸면 됩니다.