중첩 함수에서 현재 함수를 이전 함수의 반환 된 값에만 고정하는 방법은 무엇입니까?

Natarich J

이것은 알고리즘 질문입니다. 같은 인수를 반복적으로받을 수있는 고차 함수를 갖고 싶습니다 func(3, 5)(4, 9)(1, 2)(...). 내가 필요한 것은 함수 (내부 함수)를 반환하는 함수를 정의하는 것뿐이라는 것을 알고 있습니다. 아마도 이와 같이 (올바른 코드인지 확실하지 않습니다)

def func(a, b = 0):
    def inner_func(c, d):
        nonlocal b
        b += c + d
        print(b)
        ...
        return inner_func
    return inner_func(a, b)

따라서 우리가 실행할 때 :

test0 = func(1, 2)
test1 = test0(2, 3)

최소한 출력을 얻어야합니다.

5
10

하지만 실행하면 :

test0 = func(1, 2)
test1 = test0(2, 3)
test_add = test0(2, 3)

출력은 다음과 같습니다.

5
10
15

그러나 test_add = test0(2, 3)반환되는 것과 정확히 같은 것을 반환 하고 싶습니다 test1 = test0(2, 3).

Expected outputs:
5
10
10

나는 현재 함수를 만들 수있는 방법을 찾아야 test0(2, 3)만 이전 기능의 입력에 스틱을 func(1, 2)하고, 12. 더 많은 예 :

test0 = func(1, 2)
test1 = test0(2, 3)

Expected outputs:
5
10

test_add = test0(3, 5)

Expected outputs: 13 
But got: 18

그렇다면이 목적을 위해 코드를 어떻게 수정해야합니까?

Finomnis

출력을 연결하려면 결과가 호출 가능해야합니다. 그러나 호출을 반복 가능하게하려면 결과도 내부 상태를 저장해야합니다.

이 시점에서 함수를 결과 유형으로 사용하는 것은 잘못된 선택입니다. 기능과 내부 상태를 결합하는 것이 클래스 의 의미입니다.

상태를 저장하는 빠른 도우미 클래스를 작성하십시오.

class func_result:
    def __init__(self, prev):
        self.prev = prev
    def __call__(self, a, b):
        val = a+b+self.prev
        print(val)
        return func_result(val)

def func(a, b):
    return func_result(b)(a,b)

test0 = func(1, 2)
test1 = test0(2, 3)
test_add1 = test1(2, 3)
test_add2 = test0(2, 3)
test_add3 = test0(3, 5)
5
10
15
10
13

func_result클래스가 이제 노출 된다는 사실이 마음에 들지 않으면 함수에 중첩 할 수 있습니다.

def func(a, b):
    class func_result:
        def __init__(self, prev):
            self.prev = prev
        def __call__(self, a, b):
            val = a+b+self.prev
            print(val)
            return func_result(val)
    return func_result(b)(a,b)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파이썬의 인덱스 경로에서 중첩 된 목록의 값을 반환하는 함수를 작성하는 방법은 무엇입니까?

분류에서Dev

R에서 중첩 된 for 루프없이 함수 집합을 반복하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 중첩 된 함수의 네임 스페이스를 얻는 방법은 무엇입니까?

분류에서Dev

자바 스크립트에서 중첩 함수의 값을 반환하는 방법은 무엇입니까?

분류에서Dev

함수 표현식에서 반환 된 값에 액세스하는 방법은 무엇입니까?

분류에서Dev

공장에서 전달 된 함수에서 값을 반환하는 방법은 무엇입니까?

분류에서Dev

Python의 재귀 함수에 중첩 된 데이터 프레임 groupby 루프를 통합하는 방법은 무엇입니까?

분류에서Dev

tkinter를 사용하여 중첩 함수에서 전역 변수를 만드는 방법은 무엇입니까?

분류에서Dev

Node.js의 중첩 함수에서 반환하는 방법은 무엇입니까?

분류에서Dev

itertools를 사용하여 한 함수에서 다른 함수로 반환 된 값을 전달하는 방법은 무엇입니까?

분류에서Dev

재정의 된 함수 onRequestPermissionsResult에 숫자를 전달할 수있는 방법은 무엇입니까?

분류에서Dev

파이썬의 재귀 함수에서 목록을 반환하는 방법은 무엇입니까?

분류에서Dev

c에서 함수의 반환 값만 얻는 방법은 무엇입니까?

분류에서Dev

문자열을 함수에 전달하고 정수를 반환하는 방법은 무엇입니까?

분류에서Dev

SQL에서 개수를 반환 할 때 개수가 존재하지 않는 그룹화 된 항목에 값을 포함하는 방법은 무엇입니까?

분류에서Dev

구성 요소에서 중첩 함수로 이벤트를 전달하는 방법은 무엇입니까?

분류에서Dev

이 함수에서 값을 반환하는 방법은 무엇입니까?

분류에서Dev

고차 함수에 전달 된 일반 함수에 void 반환 유형이 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

함수 호출을 반환하는 것과 재귀 중에 함수를 다시 호출하는 것의 차이점은 무엇입니까?

분류에서Dev

하스켈에서 do 표기없이 정의 된 함수를 do로 정의 된 함수로 전달하는 방법은 무엇입니까?

분류에서Dev

컨트롤러의 promise 내에 중첩 된 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

파이썬의 클래스 내의 다른 함수에서 정의 된 (변수) 함수 내에서 변수를 사용하는 방법은 무엇입니까?

분류에서Dev

헤더 셀의 현재 값을 얻는 방법은 무엇입니까? (중첩 된 헤더 포함)

분류에서Dev

내 보낸 함수에 중첩 된 개체를 분해하고 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬 "재귀"함수에서 전역 변수를 재설정하는 방법은 무엇입니까?

분류에서Dev

React에서 화살표 함수로 상수로 정의 된 중첩 된 구성 요소를 사용하는 방법은 무엇입니까?

분류에서Dev

함수 내에서 전역 변수를 재정의하는 방법은 무엇입니까?

분류에서Dev

함수에서 반환 된 테이블에서 개별 열을 가져 오는 방법은 무엇입니까?

분류에서Dev

함수에서 반환 된 테이블에서 개별 열을 가져 오는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    파이썬의 인덱스 경로에서 중첩 된 목록의 값을 반환하는 함수를 작성하는 방법은 무엇입니까?

  2. 2

    R에서 중첩 된 for 루프없이 함수 집합을 반복하는 방법은 무엇입니까?

  3. 3

    파이썬에서 중첩 된 함수의 네임 스페이스를 얻는 방법은 무엇입니까?

  4. 4

    자바 스크립트에서 중첩 함수의 값을 반환하는 방법은 무엇입니까?

  5. 5

    함수 표현식에서 반환 된 값에 액세스하는 방법은 무엇입니까?

  6. 6

    공장에서 전달 된 함수에서 값을 반환하는 방법은 무엇입니까?

  7. 7

    Python의 재귀 함수에 중첩 된 데이터 프레임 groupby 루프를 통합하는 방법은 무엇입니까?

  8. 8

    tkinter를 사용하여 중첩 함수에서 전역 변수를 만드는 방법은 무엇입니까?

  9. 9

    Node.js의 중첩 함수에서 반환하는 방법은 무엇입니까?

  10. 10

    itertools를 사용하여 한 함수에서 다른 함수로 반환 된 값을 전달하는 방법은 무엇입니까?

  11. 11

    재정의 된 함수 onRequestPermissionsResult에 숫자를 전달할 수있는 방법은 무엇입니까?

  12. 12

    파이썬의 재귀 함수에서 목록을 반환하는 방법은 무엇입니까?

  13. 13

    c에서 함수의 반환 값만 얻는 방법은 무엇입니까?

  14. 14

    문자열을 함수에 전달하고 정수를 반환하는 방법은 무엇입니까?

  15. 15

    SQL에서 개수를 반환 할 때 개수가 존재하지 않는 그룹화 된 항목에 값을 포함하는 방법은 무엇입니까?

  16. 16

    구성 요소에서 중첩 함수로 이벤트를 전달하는 방법은 무엇입니까?

  17. 17

    이 함수에서 값을 반환하는 방법은 무엇입니까?

  18. 18

    고차 함수에 전달 된 일반 함수에 void 반환 유형이 있는지 확인하는 방법은 무엇입니까?

  19. 19

    함수 호출을 반환하는 것과 재귀 중에 함수를 다시 호출하는 것의 차이점은 무엇입니까?

  20. 20

    하스켈에서 do 표기없이 정의 된 함수를 do로 정의 된 함수로 전달하는 방법은 무엇입니까?

  21. 21

    컨트롤러의 promise 내에 중첩 된 함수를 호출하는 방법은 무엇입니까?

  22. 22

    파이썬의 클래스 내의 다른 함수에서 정의 된 (변수) 함수 내에서 변수를 사용하는 방법은 무엇입니까?

  23. 23

    헤더 셀의 현재 값을 얻는 방법은 무엇입니까? (중첩 된 헤더 포함)

  24. 24

    내 보낸 함수에 중첩 된 개체를 분해하고 추가하는 방법은 무엇입니까?

  25. 25

    파이썬 "재귀"함수에서 전역 변수를 재설정하는 방법은 무엇입니까?

  26. 26

    React에서 화살표 함수로 상수로 정의 된 중첩 된 구성 요소를 사용하는 방법은 무엇입니까?

  27. 27

    함수 내에서 전역 변수를 재정의하는 방법은 무엇입니까?

  28. 28

    함수에서 반환 된 테이블에서 개별 열을 가져 오는 방법은 무엇입니까?

  29. 29

    함수에서 반환 된 테이블에서 개별 열을 가져 오는 방법은 무엇입니까?

뜨겁다태그

보관