Python에서 문자열을 기반으로 함수 호출 구현

高洛峰
풀어 주다: 2017-03-03 13:54:01
원래의
1355명이 탐색했습니다.

파이썬에서는 문자열을 기반으로 함수를 호출할 수 있습니다.

1. getattr을 사용하여 문자열에서 함수를 호출합니다.

여러 프로세스에서 문자열이 전달될 수 있는데 기존 함수를 어떻게 호출합니까? 주요 함수는 getattr 함수를 사용하는 것입니다. 이 함수는 문자열을 사용하여 문자열에 해당하는 함수를 가져옵니다.

모듈에는 두 가지 함수가 있습니다.

[root@python 530]# cat attr.py
#!/usr/bin/env python

def kel():
  print 'this is a kel function'


def smile():
  print 'this is a smile function'

if __name__ == '__main__':
  kel()
  smile()
로그인 후 복사

위의 attr 모듈에는 두 가지 함수가 정의되어 있습니다. 한 함수는 kel이고 다른 함수는 smile입니다. 그러면 kel 및 smile 문자열을 기반으로 함수를 어떻게 실행합니까? 아래와 같이 getattr 함수를 사용합니다.

>>> import attr
>>> k = getattr(attr,'kel')
>>> k()
this is a kel function
>>> s = getattr(attr,'smile')
>>> s()
this is a smile function
>>> e = getattr(attr,'errors')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: &#39;module&#39; object has no attribute &#39;errors&#39;
로그인 후 복사

첫 번째는 모듈을 직접 가져오면 모듈이 객체이므로 attr의 kel() 함수는 getattr의 kel 문자열에 따라 얻어지므로 여기서 마지막으로 Execution이 구현되고, 해당 기능은 다른 문자열에 따라 실행됩니다.

2. 사전을 사용하여 함수 호출

위 모듈의 정의는 그대로 유지되지만 호출 시 사전을 정의할 수 있습니다. , 사전의 값에 따라 다음과 같이 함수가 실행됩니다.

>>> import attr
>>> d = {&#39;kel&#39;:attr.kel,&#39;smile&#39;:attr.smile}
>>> d[&#39;kel&#39;]()
this is a kel function
>>> d[&#39;smile&#39;]()
this is a smile function
로그인 후 복사

사전의 값을 이용하여 함수를 호출할 수 있도록 합니다.

위의 두 가지 방법은 주로 문자열이 전달될 때 다른 함수를 호출하는 방법을 아는 데 사용됩니다. 그 다음 첫 번째 방법은 함수를 실행하기 위해 getattr을 사용하는 것입니다. 두 번째 방법은 사전을 정의하는 것입니다. 그런 다음 사전 값을 실행합니다.

위의 Python에서 문자열을 기반으로 함수를 호출하는 구현 방법은 모두 편집자가 공유한 내용이므로 참고가 되셨으면 좋겠습니다. PHP 중국어 사이트도 지원해 주시길 바랍니다.

파이썬에서 문자열 기반 호출 함수 구현과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿