[python] 함수 인수로서의 파이썬 함수?

Python 함수가 다른 함수의 인수가 될 수 있습니까?

말하다:

def myfunc(anotherfunc, extraArgs):
    # run anotherfunc and also pass the values from extraArgs to it
    pass

그래서 이것은 기본적으로 두 가지 질문입니다.

  1. 전혀 허용됩니까?
  2. 그렇다면 다른 함수 내에서 함수를 어떻게 사용합니까? exec (), eval () 또는 이와 비슷한 것을 사용해야합니까? 그들을 엉망으로 만들 필요가 없었습니다.

BTW, extraArgs는 anotherfunc의 인수 목록 / 튜플입니다.



답변

Python 함수가 다른 함수의 인수가 될 수 있습니까?

예.

def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)

더 구체적으로 … 다양한 주장으로 …

>>> def x(a,b):
...     print "param 1 %s param 2 %s"%(a,b)
...
>>> def y(z,t):
...     z(*t)
...
>>> y(x,("hello","manuel"))
param 1 hello param 2 manuel
>>>


답변

여기에 사용하는 또 다른 방법 *args, (선택도 등) **kwargs:

def a(x, y):
  print x, y

def b(other, function, *args, **kwargs):
  function(*args, **kwargs)
  print other

b('world', a, 'hello', 'dude')

산출

hello dude
world

주의 function, *args, **kwargs가이 순서대로하고 함수를 호출 함수의 마지막 인수해야합니다.


답변

Python의 함수는 일류 객체입니다. 그러나 함수 정의 가 약간 벗어났습니다 .

def myfunc(anotherfunc, extraArgs, extraKwArgs):
  return anotherfunc(*extraArgs, **extraKwArgs)


답변

물론 이것이 파이썬이 첫 번째 매개 변수가 함수 인 다음 메서드를 구현하는 이유입니다.

  • map (function, iterable, …)-iterable의 모든 항목에 함수를 적용하고 결과 목록을 반환합니다.
  • filter (function, iterable)-함수가 true를 반환하는 iterable 요소에서 목록을 구성합니다.
  • reduce (function, iterable [, initializer])-두 인수의 함수를 반복 가능한 항목에 왼쪽에서 오른쪽으로 누적 적용하여 반복 가능한 값을 단일 값으로 줄입니다.
  • 람다

답변

  1. 예, 허용됩니다.
  2. 다른 것과 마찬가지로 함수를 사용합니다. anotherfunc(*extraArgs)

답변

  1. 예. 입력 인수에 함수 호출을 포함하면 한 번에 두 개 이상의 함수를 호출 할 수 있습니다.

예를 들면 :

def anotherfunc(inputarg1, inputarg2):
    pass
def myfunc(func = anotherfunc):
    print func

myfunc를 호출하면 다음을 수행합니다.

myfunc(anotherfunc(inputarg1, inputarg2))

이것은 anotherfunc의 반환 값을 인쇄합니다.

도움이 되었기를 바랍니다!


답변

함수 내부 함수 : 함수를 매개 변수로도 사용할 수 있습니다.

즉, 함수의 출력이 객체에 대한 참조라고 말할 수 있습니다. 아래처럼 내부 함수의 출력이 어떻게 외부 함수를 참조하는지 아래를 참조하세요.

def out_func(a):

  def in_func(b):
       print(a + b + b + 3)
  return in_func

obj = out_func(1)
print(obj(5))

결과는 .. 14

도움이 되었기를 바랍니다.