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