HOWTO · Python
Python의 문자열 이름에서 함수 호출
Python의 문자열에서 함수를 호출하는 방법을 보여줍니다.
이 페이지의 내용
이 튜토리얼은 파이썬에서 문자열 형식의 이름을 사용하여 함수를 호출하는 방법을 소개합니다.
이 문제의 사용 사례는 어떤 용도로든 모듈이나 클래스의 함수를 변수에 할당하는 것입니다.
getattr()을 사용하여 Python에서 변수에 함수 할당
getattr()함수는 객체 또는 모듈에서 속성 값을 반환합니다. 이 함수에는 두 개의 필수 인수가 있습니다. 첫 번째 인수는 개체 또는 모듈의 이름이고 두 번째는 속성 이름이 포함 된 문자열 값입니다.
문제의 속성은 변수, 함수 또는 하위 클래스의 형태 일 수 있습니다.
주어진 속성을 가진User라는 클래스가 있다고 가정 해 보겠습니다.
# Filename: user.py
class User:
name = "John"
age = 33
def doSomething():
print(name + " did something.")
이제 속성 함수doSomething()을 메서드에 저장하고 호출하려고합니다. 이를 위해getattr()함수를 사용할 것입니다.
from user import User as user
doSomething = getattr(user, "doSomething")
doSomething(user)
출력:
John did something.
이제user.doSomething()함수가doSomething 변수에 래핑됩니다. 이렇게하면 함수를 호출하기 위해 user개체를 지정할 필요가 없습니다.
locals()및globals()를 사용하여 Python의 문자열에서 함수 호출
문자열에서 함수를 호출하는 또 다른 방법은 내장 함수 locals() 및 globals를 사용하는 것입니다. 이 두 함수는 주어진 소스 코드의 현재 기호 테이블을 나타내는 Python 사전를 반환합니다.
두 함수의 차이점은 네임 스페이스입니다. 이름에서 알 수 있듯이locals()는 지역 변수를 포함하는 사전을 반환하고globals()는 지역 변수를 포함하는 사전을 반환합니다. 함수 이름도 문자열 형식으로 반환됩니다.
이러한 방법을 예로 들어 보겠습니다. 2 개의 임의 함수를 선언하고 두 내장 함수를 사용하여 호출합니다.
def myFunc():
print("This is a function.")
def myFunc2():
print("This is another function.")
locals()["myFunc"]()
globals()["myFunc2"]()
출력:
This is a function.
This is another function.
요약하면 문자열에서 함수를 호출하기 위해getattr(),locals(),globals()함수가 사용됩니다. getattr()은 함수가있는 객체 또는 모듈을 알아야하며locals()및globals()는 자체 범위 내에서 함수를 찾습니다.