몇 가지 경우에 나는 global
키워드를 사용했습니다. 현재 닫히지 않은 While 문 다음에 기본적으로 200 라인 인 일부 코드는 정리하고 있습니다. 모든 것을 기능적으로 작은 비트로 분리하고 싶습니다만 문제는 200 줄에 걸쳐 동일한 변수에 대한 많은 참조가 있다는 것입니다. 명시 적으로 선언하지 않고 모든 부모 변수에 중첩 된 함수 액세스 권한을 부여하는 방법이 있습니까?Python : 중첩 함수의 모든 부모 변수에 액세스
원래 정말 오래 동안 문 :
While True:
var1, var2, var3, var4 = x, [], {}, y
#does something with var2, var3 and var4
#does something with var1 and var3
#does something with var4 and var1
#etc.
--->에 편집 : 왜 그렇게한다면 이것은 잘못된 해결책이 될 것인가?
class My:
pass
def foo():
#does something with My.var2, My.var3 and My.var4
def bar():
#does something with My.var1 and My.var3
def tar():
does something with My.var4 and My.var1
While True:
My.var1, My.var2, My.var3, My.var4 = x, [], {}, y
#There are a lot of variables to keep track off and declaring each one
# as global will take a lot of extra declarations
foo()
bar()
tar()
루프를 통해 매번 함수를 정의하면 많은 오버 헤드가 추가됩니다. 루프 외부에서 함수를 정의하고 필요한 데이터를 매개 변수로 전달하여 적절한 값을 반환합니다. – chepner
관련 항목 : http://stackoverflow.com/a/24682708/3001761 – jonrsharpe