반응형
동적 코드 생성과 실행으로 파이썬 프로그래밍의 힘 키우기
파이썬에서는 소스 코드를 문자열로 표현하고, 이를 동적으로 생성하고 실행할 수 있는 기능을 제공합니다. 이를 통해 프로그램의 유연성과 확장성을 높일 수 있습니다.
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
실전 활용 사례
- 사용자 입력을 통한 동적 명령 실행
- 플러그인 시스템 구현
- 규칙 엔진, 알고리즘 동적 로딩
- 메타 프로그래밍
- 디버깅 및 코드 분석 도구
주의사항
- 신뢰할 수 없는 코드 실행 시 보안 위험
- 성능 이슈 발생 가능
- 복잡도 증가로 유지보수 어려움
동적 코드 생성과 실행 기능은 상당한 유연성과 강력한 기능을 제공하지만, 모듈화와 캡슐화 등의 원칙을 무시할 수 있으므로 적절히 사용해야 합니다. 특히 웹 애플리케이션 등 외부 입력 코드 실행 시 각별한 주의가 필요합니다. 하지만 이 기능을 활용하면 파이썬 프로그래밍의 새로운 가능성을 열 수 있습니다.
반응형
'파이썬 기초문법' 카테고리의 다른 글
메타클래스로 파이썬 클래스 작성을 한 단계 업그레이드하기 (0) | 2024.05.12 |
---|---|
숨은 고수의 기술 - 파이썬 디스크립터(Descriptor)로 캡슐화 완성하기 (0) | 2024.05.12 |
파이썬 데코레이터(decorator) 활용하기 (0) | 2024.05.12 |
이터레이터(Iterator) vs 제너레이터(Generator) - 파이썬 대용량 데이터 처리의 지름길 (0) | 2024.05.10 |
파이썬 코딩의 혁신! __slots__로 메모리 절약하기 (0) | 2024.05.10 |