eval(), exec()
eval()
과 exec()
함수 둘 다 파이썬의 내장 함수이며, 문자열로 표현된 python codes를 실행할 때 사용한다.
eval() 함수
문자열로 표현된 파이썬 식을 인수로 받아 파이썬 컴파일 코드로 변환한다.
a = 1
a = eval('a+4')
print(a) #5
응용하여 여러 줄의 반복되는 코드를 다음과 같이 사용할 수 있다.
*p,q,r=eval("int(input()),"*5)
#input(),input(),input(),input(),input() 결과를 *p, q, r에 넣는다.
이 함수는 매우 강력하면서도 사용을 자제하도록 권고된다.
왜냐하면 해당 표현식을 그대로 실행하는 것이기 때문에 Command Injection Flaws가 그대로 노출될 수 있다. 이는 시스템 명령어를 삽입할 수 있는 언어 모두가 가지고 있는 취약점이기도 하다.
뿐만 아니라, 이 함수는 코드의 가독성을 떨어트리고 디버깅을 어렵게 만들 수 있다.
exec() 함수
문자열로 표현된 문을 인수로 받아 파이썬 컴파일 코드로 변환한다.
파이썬 인터프리터가 번역하여 실행할 수 있다.
a = 5
exec('a = a+4')
print(a) #9
'Python > Basic programming' 카테고리의 다른 글
list 리스트 원소 형변환 (0) | 2020.03.10 |
---|---|
if문 한 줄로 쓰기 (one-liner) (0) | 2020.03.10 |
map 함수 (0) | 2020.03.10 |
파이썬에서 특수문자 출력 (0) | 2020.03.10 |
PyCharm 파이참에서 아나콘다, 가상환경 설정하기 (4) | 2020.02.13 |