2013-02-06 2 views
0

산업용 터치 스크린의 IDE로 가져올 수있는 XML 파일을 일괄 적으로 생성하는 프로젝트에서 작업하고 있습니다.의존성이 매개 변수로 전달 된 함수

각 XML 파일은 화면을 나타내며 각 화면 유형마다 고유 한 구성 기능이 있다는 사실을 제외하면 대부분의 화면에는 동일한 기능이 필요하며이를 처리하는 프로세스는 동일합니다.

화면 유형과 관련된 특성을 보유하기 위해 ScreenType 클래스를 사용 중이므로 각 유형에 고유 한 구성을 작성하고이 클래스의 __init__()에 대한 매개 변수로 전달하기로 결정했습니다. 이 방법으로, 필자는 ScreenType을 필요에 따라 전달할 때 구성 기능이 번들로 남아 필요할 때마다 사용할 수 있습니다.

그러나 구성 기능 자체에 종속성이있는 경우 어떻게 될지 잘 모르겠습니다. 예를 들어 : 그것은 ScreenType

myscreentype = ScreenType(foo, man, shoe, configure_inputdiag) 

get_numerics의 인스턴스를 생성 시간을 제공

다음
def configure_inputdiag(a, b, c): 
    numerical_formatting = get_numerics(a) 
    # ... 
    return configured_object 

는 모듈 범위 기능이지만, myscreentype 다른 모듈 내에서 (그리고 않습니다) 전달받을 수있다.

이로 인해 종속성에 문제가 있습니까? 나는 직접 테스트하려고 노력할 것이지만, 매개 변수로 함수를 전달할 때 무슨 일이 일어나고 있는지에 대한 근본적인 이해가없는 것 같습니다. 나는 무슨 일이 일어나고 있는지에 대해 잘못된 결론을 내리고 싶지 않습니다.

내가 시도한 바 : 검색, 그래서, 그리고 특별히 파이썬을 찾지 못했습니다.

미리 감사드립니다.

답변

2

아무 문제 없습니다.

함수 configure_inputdiag은 정의 된 컨텍스트에서 항상 get_numerics을 참조합니다. 따라서 configure_inputdiagget_numerics에 대해 아무것도 모르는 다른 모듈에서 호출해도 잘 작동합니다.

함수를 매개 변수로 전달하면 해당 함수에 대한 참조가 생성됩니다. 이 참조를 통해 실제로 이름 (또는 그 이름이 나온 모듈)을 알지 못해도 이름으로 호출 한 것처럼 함수를 호출 할 수 있습니다. 참조는 프로그램의 유효 기간 동안 유효하며 항상 동일한 기능을 나타냅니다. 함수 참조를 저장하면 기본적으로 동일한 함수에 대해 다른 이름이됩니다.

2

파이썬에서 매우 자연스러운 형태로 작품을하려고 무엇 - 위의 exampe에서

, 어디 네임 스페이스 (모듈)에서 가져온 "get_numerics"기능이 필요하지 않습니다 "

모듈 A : :

def get_numerics(parm): 
    ... 

input diag = module_B.configure_inputdiag(get_numerics, a) 

모듈 B :

,536 - "(기능"당신은이 예에서와 같이가는 configure_inputdiag는 그냥 말을 전화) 일반 매개 변수로 전달있다 "
def configure_inputdiag(function, parm): 
    result = function(parm) 

오 - 나는 어쨌든 문제가 없다는 것을 알았다. 파이썬에서는 함수가 int와 문자열과 같은 최상위 객체이다. 다른 함수에 매개 변수로 전달할 수있다. 다른 모듈에서 원하는대로 나는 위의 예제가 그것을 분명히한다고 생각한다.

2

get_numerics은 함수 본문의 범위에서 처리되므로 호출자의 범위에있을 필요도 없습니다.

관련 문제