Python 함수가 다른 함수의 인수가 될 수 있습니까?
말하다:
def myfunc(anotherfunc, extraArgs):
# run anotherfunc and also pass the values from extraArgs to it
pass
그래서 이것은 기본적으로 두 가지 질문입니다.
- 전혀 허용됩니까?
- 그렇다면 다른 함수 내에서 함수를 어떻게 사용합니까? 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])-두 인수의 함수를 반복 가능한 항목에 왼쪽에서 오른쪽으로 누적 적용하여 반복 가능한 값을 단일 값으로 줄입니다.
- 람다
답변
- 예, 허용됩니다.
- 다른 것과 마찬가지로 함수를 사용합니다.
anotherfunc(*extraArgs)
답변
- 예. 입력 인수에 함수 호출을 포함하면 한 번에 두 개 이상의 함수를 호출 할 수 있습니다.
예를 들면 :
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
도움이 되었기를 바랍니다.