: 또한 함수에 인수로 호출 할 수 있습니다함수가 다른 함수의 본문에서 호출되는지 또는 함수의 인수로 호출되는지를 결정할 수 있습니까? 우리는 파이썬 함수가 있다고 가정
def funcA():
func()
FUNC() :
def func():
# if called in the body of another function, do something
# if called as argument to a function, do something different
pass
FUNC()는 다른 함수의 본문에 호출 할 수 있습니다 :
def funcB(arg1):
pass
def funcC(**kwargs):
pass
funcB(func())
funcC(kwarg1=func())
func() 본문에서 두 경우를 구별 할 수있는 방법이 있습니까?
EDIT. 여기에 나의 유스 케이스가있다. 규칙 기반 3D 모델 생성을위한 언어로 Python을 사용하고 싶습니다. 각 규칙은 작은 파이썬 함수입니다. 각 후속 규칙은 모델을 구체화하고 추가 세부 사항을 추가합니다. Here은 예제 규칙 집합입니다. Here은 규칙 집합이 어떻게 작동하는지 설명하는 자습서입니다. 내 규칙 언어는 CGA 모양 문법이라고하는 규칙 언어를 모방합니다. 이 StackExchange 질문을 해결할 수 있다면 제 규칙 언어가 크게 단순화 될 수 있습니다.
EDIT2. 코드 패치도 나에게 충분할 것입니다. 예를 들어 func가 다른 함수의 본문에서 호출 된 모든 경우는 다음과 같이 대체됩니다.
call_function_on_the_right()>>func()
왜이 사실을 알아야할까요? 당신의 유스 케이스는 무엇입니까? –
당신처럼 실제로 두 개의 서로 다른 기능을 가지고 있습니다. –
그리고 두 번째 형식은 표현식이며, 출력 *은'funcB()'의 인수로 사용됩니다. 당신은 또한'foo = func()'그리고'funcB (foo)'를 가질 수 있고 아무런 차이가 없을 것입니다. 또는'foo = func' (참고로, * call *은 같은 함수에 대한 참조), 그리고 나서'funcB (foo())'는 같은 함수 객체를 호출합니다. –