-
[ Python ] eval과 literal_eval 차이Python/Python Programming 2022. 7. 3. 01:38
eval 함수는 표현식 string 값 그대로 실행할 수 있도록 하는 Built-in함수이다.
print(eval('1+1')) # 산술연산 print(eval('{1:10}')) # 타입변경 <class 'int'> <class 'dict'>
이렇게 강력한 함수지만, 시스템 명령어도 그래도 실행할 수 있기 때문에, 보안상 위험할 수 있다.
eval('__import__("os").getcwd()') 'D:\\note'
literal_eval는 eval() 함수와 동일한 기능을 하지만 형변환 정도만 가능하다.
from ast import literal_eval print(type(literal_eval('{1:10}'))) # 타입변경 <class 'dict'>
연산, 시스템 명령어는 에러를 발생시킨다.
print(literal_eval('1+1')) # 산술연산 --------------------------------------------------------------------------- ValueError
print(type(literal_eval('__import__("os").getcwd()'))) --------------------------------------------------------------------------- ValueError
보안상 literal_eval를 사용하자!!
'Python > Python Programming' 카테고리의 다른 글
[ Python ] difflib 모듈 ( 문자열 비교, 유사도 ) (0) 2023.04.24 [ Python ] elastcisearch index 생성, 삭제, 조회 (0) 2023.04.14 [ Python ] Remine API 사용하기 (0) 2023.03.21 [ Python ] Tree Graph 만들기 (0) 2023.02.15 [ Python ] cx_Oracle을 이용한 oracle 연결 (0) 2022.06.27 [Python] 줄 바꿈(\n) 을 포함 입력 (0) 2020.11.28 [Python] Celsius temperature To Fahrenheit's temperature Basic Function (섭씨, 화씨) (0) 2020.11.22 [Python] 할당된 변수들을 반복문으로 실행하기. (eval 함수이용) (0) 2020.11.02