파이썬 기초문법

동적 코드 생성과 실행으로 파이썬 프로그래밍의 힘 키우기(eval, exec)

Family in August 2024. 5. 12. 12:16
반응형


동적 코드 생성과 실행으로 파이썬 프로그래밍의 힘 키우기

파이썬에서는 소스 코드를 문자열로 표현하고, 이를 동적으로 생성하고 실행할 수 있는 기능을 제공합니다. 이를 통해 프로그램의 유연성과 확장성을 높일 수 있습니다.


eval(), exec() 함수

eval()은 문자열 형태의 유효한 파이썬 표현식을 동적으로 평가합니다.
exec()는 문자열 형태의 유효한 파이썬 문을 동적으로 실행합니다.

x = 1
y = eval("x + 2") # y = 3

exec("print('Hello, World!')")
# Hello, World!



compile() 함수

compile() 함수를 이용하면 문자열을 코드 객체로 컴파일할 수 있습니다.

code = 'for i in range(5): print(i)'
cod_obj = compile(code, '<string>', 'exec')
exec(cod_obj)
# 0 1 2 3 4



실전 활용 사례

- 사용자 입력을 통한 동적 명령 실행
- 플러그인 시스템 구현
- 규칙 엔진, 알고리즘 동적 로딩
- 메타 프로그래밍
- 디버깅 및 코드 분석 도구


주의사항

- 신뢰할 수 없는 코드 실행 시 보안 위험
- 성능 이슈 발생 가능
- 복잡도 증가로 유지보수 어려움

동적 코드 생성과 실행 기능은 상당한 유연성과 강력한 기능을 제공하지만, 모듈화와 캡슐화 등의 원칙을 무시할 수 있으므로 적절히 사용해야 합니다. 특히 웹 애플리케이션 등 외부 입력 코드 실행 시 각별한 주의가 필요합니다. 하지만 이 기능을 활용하면 파이썬 프로그래밍의 새로운 가능성을 열 수 있습니다.

반응형