>

내 자신의 파이썬 라이브러리가 있습니다. 그리고 나는 데코레이터 @send_transport 를 사용합니다.  그것에서.

@send_transport(program_version=__version__, entity=1)
def post(self):
    pass

이와 같은 것을 구현할 수 있습니까?

try:
    from spo_client import send_transport    
except ImportError:
    pass
else:
    @send_transport(program_version=__version__, entity=1)
def post(self):
    pass

  • 답변 # 1

    목표를 달성하기 위해 할 수있는 일

    try:
        from spo_client import send_transport    
        decorator = send_transport(program_version=__version__, entity=1)
    except ImportError:
        decorator = lambda f: f
    @decorator
    def post(self):
        pass
    
    
    이것은 "올바른"데코레이터 또는 그 자체로 함수를 변형시킬 더미를 만듭니다. 이자형. 내버려 두십시오.

    또 다른 옵션은 더미 send_transport 를 정의하는 것입니다  기능 :

    def dummy_send_transport(*a, **k):
        return lambda f: f
    try:
        from spo_client import send_transport    
    except ImportError:
        send_transport = dummy_send_transport
        # or just send_transport = lambda *a, **k: lambda f: f
        # but then the code would be less self-documenting.
    @send_transport(program_version=__version__, entity=1)
    def post(self):
        pass
    
    
    이 경우, 가져 오기 오류에서 send_transport()  NOP 데코레이터를 반환하는 버전으로 대체되지만 "원본"이라고 할 수 있습니다. 여기, 당신은 몇 가지 다른 send_transport 를 가질 수 있습니다  코드를 호출하고 변수를 미리 정의하지 않아도됩니다.

  • 이전 hex - C에서 16 진수를 uint8_t로 16 진수 scanf [중복]
  • 다음 python - 팬더는 char로 구분 된 값으로 데이터 프레임을 함축합니다