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()
는 자체 범위 내에서 함수를 찾습니다.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn관련 문장 - Python Function
- Python에서 함수 종료
- Python의 선택적 인수
- Python Functools 부분 함수
- Python 함수 매개변수 유형
- Python에서 단계 함수 맞추기
- Python의 내장 ID 함수