반응형
def maker(n):
def action(x):
return x ** n
return action
f = maker(2)
print(f)
print(f(3))
print(f(4))
g = maker(3)
print(g(3))
print(f(3)) # still remembers 2
maker ()
가 반환되고 action ()
이 호출 될 때 종료 되었는데도 중첩 함수가 첫 번째 값 2
를 기억하는 이유는 무엇입니까?
해결 방법
부모 함수에서 시작된 모든 변수가 자식 함수 내부의 실제 값으로 대체되는 것을 볼 수 있습니다. 이렇게하면 자식 함수가 올바르게 실행되도록 부모 함수의 범위를 추적 할 필요가 없습니다.
"함수를 동적으로 생성"이라고합니다.
def maker(n):
def action(x):
return x ** n
return action
f = maker(2)
--> def action(x):
--> return x ** 2
이것은 파이썬의 기본 동작이며 여러 할당으로 동일합니다.
a = 1
b = 2
a, b = b, a
파이썬은 이것을 다음과 같이 읽습니다.
a, b = 2, 1
기본적으로 값을 삽입하기 전에 값을 삽입합니다.
참조 페이지 https://stackoverflow.com/questions/2005956
반응형
'파이썬' 카테고리의 다른 글
파이썬 변수 주위에 큰 따옴표 인쇄 (0) | 2020.12.31 |
---|---|
파이썬 matplotlib에서 서브 플롯 사이의 간격을 제거하는 방법은 무엇입니까? (0) | 2020.12.31 |
파이썬 명령 줄 인수를 구문 분석하는 가장 좋은 방법은 무엇입니까? (0) | 2020.12.31 |
파이썬 Pandas 데이터 프레임은 각 그룹의 첫 번째 행을 가져옵니다. (0) | 2020.12.31 |
파이썬 키 값을 사용하고 해당 값이없는 Python에서 사전 초기화 (0) | 2020.12.31 |
댓글