본문 바로가기
파이썬

파이썬 중첩 함수는 Python에서 어떻게 작동합니까?

by º기록 2020. 12. 31.
반응형
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

 

 

반응형

댓글