2016-10-20 2 views
0

어쩌면이 바보 같은 질문이지만 나는 그것에 어려움을 겪고 있으며 인터넷에서 명확한 설명을 찾을 수 없습니다.함수에 모듈 함수를 호출하는 방법

그래서 함수가있는 모듈을 작성하고 싶습니다. 이 함수가 인수로서 다른 함수를 취하고, 인수 함수의 출력에 무엇인가를 수행하고 그것을 반환하고 싶습니다. 내가하고 싶은 것이 코드에서

은 다음과 같습니다 거기에 내가이 가능 믿고 이렇게 빌드 파이썬 방법에 많은하지만 난 아무 생각이 어떻게

from my_module import my_function 

output = stuff.my_function() # stuff = what my_function accepts as argument 

입니다. 나는 몇 가지 방법을 시도했지만 아무 것도 시도하지 않았다.

+0

, 여기에 대해 읽어 http://thecodeship.com/patterns/guide- to-python-function-decorators/당신은 아이디어를 얻을 것입니다 –

+1

함수 데코레이터는 arg로 함수를 전달하는 훨씬 간단한 질문을 실제로 다루지 않습니다. – AChampion

+0

나는 함수 (another_function)를하는 방법을 안다. 내가 묻는 것은 .funcion 표기법을 사용하는 방법이다. 예 : foo.strip(), my_file.read() 등. 처음에 명확하지 않은 경우 사과드립니다. – Faber

답변

4

기능을 사용하면 ()없이 이름으로 기능을 전달할 수 있도록 파이썬에서 최고 수준의 시민 인 도움을 사전에 감사합니다, 당신은 () 예를 들어, 사용하여 해당 함수를 호출 할 수 있습니다 :

from my_module import my_function 

def a_function(x): 
    y = x() 
    return y 

output = a_function(my_function) 
+0

그리고 함수 대신 스크립트 (.py 파일)가 필요한 경우 어떻게해야합니까? 같은 개념인가? – Faber

+0

전체 스크립트를 실행하는 것은 완전히 같지 않습니다 ... 당신이'my_module'을 임포트하면'my_module.py'에있는 모든 코드를 실행하게됩니다. 이것은 보통 함수의'def'ininition 일 뿐이지 만 어떤 코드가 있다면 실행됩니다. '.py'를 동적으로 임포트 할 수는 있지만 다른 질문입니다. – AChampion

0

당신이 원하는 것은 을 인수로 my_function에 전달하고 수정 된 함수를 되 찾는다. 여기

In [1]: def add_one(f): 
    ...:  def f_plus_1(*args, **kwargs): 
    ...:   return f(*args, **kwargs) + 1 
    ...:  return f_plus_1 
    ...: 

In [2]: def multiply(a, b): 
    ...:  return a * b 
    ...: 

In [3]: multiply_and_add_one = add_one(multiply) 

In [4]: multiply(5, 3) 
Out[4]: 15 

In [5]: multiply_and_add_one(5, 3) 
Out[5]: 16 

우리는 우리가 원래의 기능에 도착 인수를 통과 *args**kwargs를 사용

다음은 간단한 예입니다.

0

파일 my_module.py

def my_function(): 
    return something 

파일 current.py이

우리는 파이썬 장식이 왜
from my_module import my_function 

def a_function(x): 
    does something 
    return y 

output = a_function(my_function()) 
관련 문제