Python의 문자열 이름에서 함수 호출

Rayven Esplanada 2023년1월30일
  1. getattr()을 사용하여 Python에서 변수에 함수 할당
  2. locals()globals()를 사용하여 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()는 자체 범위 내에서 함수를 찾습니다.

Rayven Esplanada avatar Rayven Esplanada avatar

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 String