>  기사  >  백엔드 개발  >  Python 반환 함수 및 반환 값에 대한 비밀

Python 반환 함수 및 반환 값에 대한 비밀

Tomorin
Tomorin원래의
2018-08-17 17:53:351698검색

최근에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.