Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 문자열에 담긴 코드를 실행하는 방법: exec()와 eval() 완벽 가이드

문자열 형태의 파이썬 코드 실행하기

파이썬에서는 문자열로 저장된 코드를 동적으로 실행할 수 있습니다. 실행하려는 내용이 문장(statement)인지 표현식(expression)인지에 따라 사용하는 함수가 달라집니다.

1. exec() — 문장(코드 블록) 실행

여러 줄의 코드나 print 문 같은 파이썬 문장을 실행하려면 exec() 함수를 사용합니다.

>>> my_code = 'print("Hello World!")'
>>> exec(my_code)
Hello World!

exec()는 문자열을 그대로 파이썬 코드로 해석하여 실행하기 때문에, 조건문·반복문·함수 정의 등 복잡한 코드도 실행할 수 있습니다.

2. eval() — 표현식 값 평가

단순히 수식이나 표현식의 결괏값만 필요하다면 eval()을 사용하는 것이 적합합니다. eval()은 표현식을 평가한 결과를 반환합니다.

>>> my_expression = "5 + 3"
>>> eval(my_expression)
8

예를 들어 사용자 입력으로 받은 수식을 계산하거나, 설정 파일에 담긴 표현식을 처리할 때 유용하게 활용할 수 있습니다.

⚠️ 보안 주의사항

exec()eval()은 매우 강력한 함수이지만, 그만큼 위험도가 큽니다. 외부에서 들어온 신뢰할 수 없는 문자열을 그대로 실행하면 다음과 같은 문제가 발생할 수 있습니다.

  • 악성 코드 실행으로 인한 시스템 침해
  • 데이터 삭제, 파일 조작 등 심각한 보안 취약점
  • 디버깅하기 어려운 미묘한 버그 발생

따라서 반드시 신뢰할 수 있는 소스의 문자열에만 사용하고, 가능하다면 ast.literal_eval()처럼 더 안전한 대안을 우선 고려하는 것이 좋습니다.