이 두 함수는 문자열화 되어 있는 수식 계산 또는 문장을 실행하는 역할을 합니다.
Eval : 수식을 문자열로 입력하면 계산된 결과값을 반환
Exec : 실행 가능한 문장을 문자열로 입력하면 문장 수행
예시 보시면 쉽게 이해하실 것 같습니다.
# 간단한 산술 연산
result1 = eval("2 + 3 * 4")
print(f"eval('2 + 3 * 4') 결과: {result1}") # 출력: eval('2 + 3 * 4') 결과: 14
# 변수 사용 (현재 환경의 변수를 참조)
x = 10
result2 = eval("x * 2")
print(f"eval('x * 2') 결과: {result2}") # 출력: eval('x * 2') 결과: 20
# 함수 호출 (현재 환경에 정의된 함수를 호출)
def greet(name):
return f"안녕하세요, {name}님!"
message = eval("greet('철수')")
print(f"eval('greet('철수')') 결과: {message}") # 출력: eval('greet('철수')') 결과: 안녕하세요, 철수님!
# 리스트 접근
my_list = [1, 2, 3]
element = eval("my_list[1]")
print(f"eval('my_list[1]') 결과: {element}") # 출력: eval('my_list[1]') 결과: 2
eval( )은 "표현식"의 결과를 직접 반환합니다. 그래서 할당문이나 제어구조, 함수의 정의 같은 것들은 eval로 수행할 수 없습니다.
# 변수 할당 및 출력
exec("y = 5")
print(f"exec('y = 5') 실행 후 y 값: {y}") # 출력: exec('y = 5') 실행 후 y 값: 5
exec("print('exec 함수 실행 중...')") # 출력: exec 함수 실행 중...
# 여러 줄의 코드 실행
code_block = """
z = 10
result = z + 5
print(f'code_block 실행 결과: {result}')
"""
exec(code_block) # 출력: code_block 실행 결과: 15
# 함수 정의 및 호출
func_def = """
def say_hello(name):
print(f'안녕, {name}!')
"""
exec(func_def)
say_hello("영희") # 출력: 안녕, 영희!
# 조건문 실행
condition = "if 10 > 5: print('10은 5보다 크다!')"
exec(condition) # 출력: 10은 5보다 크다!
'프로그래밍 > Python 관련 정보' 카테고리의 다른 글
[Pythonic Programming] SOLID원칙 (1) | 2024.10.25 |
---|---|
[Python Programming 기초] 정규표현식/Wild card (0) | 2024.10.25 |
[Python Programming 기초] Formatted string (2) | 2024.10.24 |
[Python Programming 기초] 부분 unpacking (1) | 2024.10.22 |
[Python Programming 기초] Dictionary (3) | 2024.10.22 |