최근에 Python을 접하면서 Python에서 함수를 반환한다는 개념을 보았습니다. 예를 들어 이전에는 함수 반환 값 만 접했습니다. , Python은 int, str, List, dict 및 기타 유형의 데이터를 반환할 수 있습니다. 여기서 말하고 싶은 것은 Python도 반환 함수 도 지원한다는 것입니다.
먼저 Python이 지원하는 반환 함수의 기본 구문을 살펴보겠습니다.
def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g
변수 매개변수의 합을 구현해 보겠습니다. 일반적으로 합산 함수는 다음과 같이 정의됩니다.
def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax
그런데 합을 바로 합산할 필요는 없지만 후속 코드에서 필요에 따라 계산한다면 어떻게 될까요? 합계 결과를 반환하는 대신 합계 함수를 반환할 수 있습니다:
def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum
lazy_sum()을 호출하면 반환되는 것은 합계 결과가 아니라 합계 함수입니다: #🎜🎜 #
>>> f = lazy_sum(1, 3, 5, 7, 9) >>> f <function lazy_sum.<locals>.sum at 0x101c6ed90># 🎜🎜#함수 f가 호출될 때 sum의 결과가 실제로 계산됩니다.
>>> f() 25
이 예에서는 함수 sum을lazy_sum에 정의하고 내부 함수 sum은 매개변수를 참조하고 외부 함수인lazer_sum의 지역 변수lazy_sum이 함수 sum을 반환하면 관련 매개 변수와 변수가 반환된 함수에 저장됩니다. "Closure"라는 프로그램 구조는 매우 강력합니다.
lazy_sum()을 호출하면 동일한 매개변수가 전달되더라도 각 호출은 새 함수를 반환합니다.
>>> f1 = lazy_sum(1, 3, 5, 7, 9) >>> f2 = lazy_sum(1, 3, 5, 7, 9) >>> f1==f2 False
f1() f2()를 호출해도 서로 영향을 미치지 않습니다.
위 내용은 Python 반환 함수 및 반환 값에 대한 비밀의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!