>  기사  >  백엔드 개발  >  Python에서 문자열을 사용하여 함수와 메서드를 호출하는 방법에 대한 예를 공유하세요.

Python에서 문자열을 사용하여 함수와 메서드를 호출하는 방법에 대한 예를 공유하세요.

黄舟
黄舟원래의
2017-08-04 10:42:161721검색

문자열은 Python에서 일반적으로 사용되는 데이터 유형이므로 문자열의 일반적인 방법을 익히는 것이 매우 필요합니다. 다음 글은 파이썬에서 문자열을 통해 함수나 메소드를 호출하는 것과 관련된 정보를 주로 소개합니다. 도움이 필요한 친구들이 참고할 수 있습니다.

머리말

이 글은 주로 파이썬에서 문자열을 사용하여 함수나 메소드를 호출하는 것과 관련된 내용을 소개하고, 참고와 학습을 위해 공유합니다.

자세한 소개를 살펴보겠습니다. 먼저 하나 살펴보기 예:


>>> def foo():
    print "foo"

>>> def bar():
    print "bar"

>>> func_list = ["foo","bar"]
>>> for func in func_list:
    func()
TypeError: 'str' object is not callable

목록에 있는 함수를 순회하여 실행하고 싶지만 목록에서 얻은 함수 이름이 문자열이므로 유형 오류 메시지가 표시되고 문자열 개체는 실행할 수 없습니다. 호출됩니다. 문자열을 호출 가능한 객체로 만들고 싶다면 어떻게 해야 할까요? 아니면 변수를 통해 모듈 속성과 클래스 속성을 호출하시겠습니까?

이를 달성하는 방법에는 세 가지가 있습니다.

eval()


>>> for func in func_list:
    eval(func)()
foo
bar

eval()은 일반적으로 문자열 표현식을 실행하고 표현식의 값을 반환하는 데 사용됩니다. 여기서는 문자열을 해당 함수로 변환합니다. eval()은 강력하지만 위험하므로(eval은 악함) 권장되지 않습니다.

locals() 및 globals()


>>> for func in func_list:
    locals()[func]()
foo
bar
>>> for func in func_list:
    globals()[func]()
foo
bar

locals() 및 globals()는 Python의 두 내장 함수로, 이를 통해 사전의 로컬 및 전역 변수에 액세스할 수 있습니다.

getattr()

getattr()은 Python의 내장 함수입니다. getattr(object,name)은 object.name과 동일하지만 여기서 name은 변수일 수 있습니다.

foo 모듈의 bar 메소드를 반환합니다.


>>> import foo
>>> getattr(foo, 'bar')()

Foo 클래스의 속성을 반환합니다.


>>> class Foo:
  def do_foo(self):
    ...
  def do_bar(self):
    ...
>>> f = getattr(foo_instance, 'do_' + opname)
>>> f()

요약

위 내용은 Python에서 문자열을 사용하여 함수와 메서드를 호출하는 방법에 대한 예를 공유하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:파이썬 학습 규칙다음 기사:파이썬 학습 규칙