차밍이
[Python] eval() / exec() 함수로 문자열을 파이썬 코드로 실행하기 본문
반응형
목차
eval() 과 exec()는 무엇인가?
eval
과 exec
함수는 파이썬의 내장 함수이다.
문자열로 적어진 수식 혹은 코드를 파이썬 코드로 실행할 때 사용된다.
eval
: 문자열로 구성된 식을 처리한다.
exec
: 문자열로 구선된 코드를 컴파일하여 수행한다.
eval 함수
문자열 식을 수행한다
식만 처리하므로 변수 선언 및 할당과 같은 것은 할 수 없다.
eval("3 * 4 * 5 * 6")
>>> 360
코드 내에 변수들의 값 또한 잘 받아서 수행한다.
a = 10
eval("a * 3 * 4 * 5 * 6") # 문자열 식의 a 는 파이썬의 a 변수와 동일
>>> 3600
eval
은 수행한 후 결과 또한 반환한다.
위의 수식 결과를 return 하는 것을 볼 수 있음
exec 함수
문자열로 구성된 파이썬 코드를 수행한다.
코드로 받아들여 수행하므로
변수 선언이나 할당 등을 할 수 있다.
a = 10
exec("b = 5")
eval("a / b")
>>> 2.0
exec
는 코드를 수행한다.
수행하기만 한다.
수행하고 결과를 반환하지 않는다.
위의 코드에서 b = 5
를 수행했고 eval
을 사용해서 a / b
를 수행했다.
eval
은 결과인 2.0 값을 보내준다.
결과 값 반환에 대한 eval과 exec의 차이
하지만 exec
는 결과를 반환하지 않는다.
딱 수행만 한다.
예를 들어 위의 예제를 수정해보자.
a = 10
exec("b = 5")
exec("a / b")
jupyter
에서 수행해보면 아무 값도 보여주지 않는 것을 알 수 있다.
a / b
를 딱 수행하고 끝나버린 것이다.
그 값을 확인하고 싶다면 새로운 변수를 선언해서 결과 값을 받도록 해야한다.
수행한 결과 값을 확인하는 방식에 대해서 두 함수의 차이는 아래와 같다.
exec("x = a / b")
x
>>> 2.0
##############################
x = eval("a / b")
x
>>> 2.0
반응형
'파이썬 > 기본 문법 정리' 카테고리의 다른 글
[Python] Scatter Plot Animation - 영상 그래프 제작 (0) | 2022.04.21 |
---|---|
[Python] 판다스 apply - 함수에 복수 인자 적용하기 (2) | 2022.03.02 |
[파이썬] %timeit으로 jupyter notebook에서 Cell 단위 코드 수행 시간 확인하기 (0) | 2022.02.28 |
[Python] 리스트 요소 곱하기, 배열 원소들끼리 곱하기 (1) | 2022.02.27 |
[Python] 객체에 속성 관련 함수들 hasattr, delattr, setattr, getattr (1) | 2022.02.26 |
[Python] reduce 함수 사용 방법 (1) | 2022.02.25 |
[Python] getattr() 를 사용해서 간결하게 코드 작성하기, 예시 및 장점 (2) | 2022.02.25 |
[Python] 파일명 바꾸기, 여러 파일 한번에 변경 - os.rename (1) | 2022.02.24 |
관련된 글 보기
Comments