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

  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()는 자체 범위 내에서 함수를 찾습니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
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