유연한 호출을 위해 데이터 구조에 함수 저장
Python 코드로 작업할 때 런타임에 구조화된 방식으로 함수를 저장하는 것이 유용한 경우가 많습니다. 기도. 함수가 포함된 목록이나 사전을 생성하려고 시도하는 동안 질문에 설명된 것과 같은 제한 사항에 직면할 수 있습니다.
mydict = { 'funcList1': [foo(), bar(), goo()], 'funcList2': [foo(), goo(), bar()]}
이 접근 방식을 사용하면 함수가 즉시 호출되어 잘못된 동작이 발생합니다. 이 문제를 해결하려면 나중에 호출하기 위해 함수를 식별자와 연결할 수 있는 적절한 데이터 구조가 필요합니다.
함수 디스패치를 위한 사전 사용
Python 함수가 먼저입니다. -클래스 객체. 이는 객체가 변수에 할당되고 데이터 구조에 저장될 수 있음을 의미합니다. 함수를 사전에 저장하려면 해당 함수를 값으로 직접 할당해야 하며 호출 결과가 아닌 함수 개체인지 확인해야 합니다.
예:
dispatcher = {'foo': foo, 'bar': bar}
이 사전에서 , 키는 식별자이고 값은 실제 함수 개체에 대한 참조입니다. 'foo' 함수를 호출하려면 간단히 dispatcher['foo']()를 호출하면 됩니다.
여러 함수를 목록에 저장
여러 함수를 저장해야 하는 경우 그룹으로서 목록을 사용할 수 있습니다. 그러나 함수 목록을 수동으로 호출하는 것은 번거로울 수 있습니다. 이 문제를 해결하려면 목록을 반복하고 각 함수를 호출하는 도우미 함수를 생성할 수 있습니다.
def fire_all(func_list): for f in func_list: f() dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]} fire_all(dispatcher['foobar'])
이 코드는 fire_all(dispatcher['foobar')일 때 'foo' 및 'bar' 함수를 모두 호출합니다. ])이 호출됩니다.
결론
사전이나 목록을 사용하여 함수를 저장하면 함수를 동적으로 관리하고 호출하기 위한 유연하고 구조화된 접근 방식이 제공됩니다. 이를 통해 재사용 가능한 구성요소를 생성하고 코드 가독성과 유지 관리성을 향상시킬 수 있습니다.
위 내용은 Python 데이터 구조에서 함수를 효율적으로 저장하고 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!