eval(expression)
eval 함수는 한줄로 정리하자면
매개변수로 받은 expression (=식)을 문자열로 받아서, 실행하는 함수 입니다.
어떤가요? eval 함수 참 신기하지 않나요?
그러면 우린 input 함수를 이용해서 사용자로부터 원하는 파이썬 함수를 입력 받거나 식을 입력받아서 마음대로 프로그램을 조종할 수 있게 할 수 있습니다. 너무 좋네요.
남이 만든 프로그램에 자유롭게 명령어를 입력할 수 있다니!
그런데 그게 이 eval(expression)함수의 함정 입니다.
사용자가 마음대로 프로그램을 조종할 수 있다. 즉, 프로그램에 명령을 입력할 수 있다.
결국 그 말은 프로그램을 상처입히거나 해킹을 하거나 할 수 있다는 뜻과 동일하게 됩니다.
이 함수를 실제 릴리즈 하는 프로그램에서 사용한다고 하면 조금 위험하겠죠? 너무 많은 자유를 주는 그런 함수 입니다.
a = eval('"BlockDMask" + "blog"')
print(f"1. eval('\"BlockDMask\"' + '\" blog\"') : {a}")
b = eval("100 + 32")
print(f'2. eval("100 + 32") : {b}')
c = eval("abs(-56)")
print(f'3. eval("abs(-56)") : {c}')
d = eval("len([1,2,3,4])")
print(f'4. eval("len([1,2,3,4])") : {d}')
e = eval("round(1.5)")
print(f'5. eval("round(1.5)") : {e}')