[파이썬] 동적으로 코드 실행 (Dynamic Code Execution) 사용 예제

파이썬에서는 동적으로 코드를 실행할 수 있는 기능을 제공합니다. 이는 문자열로 된 파이썬 코드를 실행하거나, 함수나 클래스를 동적으로 생성하고 호출할 때 유용합니다. 아래는 동적으로 코드를 실행하는 예제들입니다:

1. exec() 함수를 사용한 코드 실행:

exec() 함수를 사용하여 문자열로 된 파이썬 코드를 실행할 수 있습니다.

code = """
def greet(name):
    print(f"Hello, {name}!")

greet("Alice")
"""
exec(code)
# "Hello, Alice!" 출력

2. eval() 함수를 사용한 표현식 평가:

eval() 함수를 사용하여 문자열로 된 파이썬 표현식을 평가할 수 있습니다.

expression = "3 + 5"
result = eval(expression)
print(result)  # 8 출력

3. 함수 동적 생성 및 호출:

exec() 함수를 사용하여 함수를 동적으로 생성하고 호출할 수 있습니다.

code = """
def add(a, b):
    return a + b
"""

exec(code)
result = add(3, 4)
print(result)  # 7 출력

4. 클래스 동적 생성:

type() 함수를 사용하여 클래스를 동적으로 생성할 수 있습니다.

MyClass = type("MyClass", (object,), {"x": 1, "y": 2})

obj = MyClass()
print(obj.x)  # 1 출력

5. 동적으로 모듈 가져오기:

importlib 모듈을 사용하여 동적으로 모듈을 가져올 수 있습니다.

import importlib

module_name = "math"
math_module = importlib.import_module(module_name)

result = math_module.sqrt(16)
print(result)  # 4.0 출력

동적 코드 실행은 메타프로그래밍, 플러그인 시스템, 코드 생성 등 다양한 상황에서 유용하게 활용됩니다. 그러나 주의할 점은 안전성과 보안을 유지하기 위해 사용자 입력을 평가할 때 조심해야 한다는 것입니다. 사용자 입력을 그대로 실행하면 보안 상 문제가 될 수 있으므로 안전한 방법으로 처리해야 합니다.