간부 (표현, 전역 = 없음, 현지인 = 없음) :파이썬 - 파이썬 표준 라이브러리의 예로서 같이 내가 평가의 기본적인 사용을 이해
x = 1
print(eval('x+1'))
2
사람이 더 간결한 설명을 제공시겠습니까 전역 적 (globals)과 지역 (localals) 논쟁을 모두 활용하는 사례가있다.
간부 (표현, 전역 = 없음, 현지인 = 없음) :파이썬 - 파이썬 표준 라이브러리의 예로서 같이 내가 평가의 기본적인 사용을 이해
x = 1
print(eval('x+1'))
2
사람이 더 간결한 설명을 제공시겠습니까 전역 적 (globals)과 지역 (localals) 논쟁을 모두 활용하는 사례가있다.
전역 로컬 로컬 네임 스페이스를 지정하면 현재 범위 대신 전역, 로컬 변수에 사용됩니다.
>>> x = 1
>>> d = {'x': 9}
>>> exec('x += 1; print(x)', d, d) # x => 9 (not 1)
10
참고 : 사전 외부의 x
은 영향을받지 않습니다.
>>> x
1
>>> d['x']
10
globals
및 locals
는 표현식을 평가하려고 할 때 변수가 사용할 수 있어야 eval
가 작동해야하는 범위, 즉를 정의 할 수 있습니다. 지역 및 전역 범위에서 x
으로, 로컬 버전을 사용하는 것을
>>> eval("x * 2", {'x': 5, 'y': 6}, {'x': 4})
8
참고 : 예를 들면.
Exec 또는 eval? ... –
수정 된 질문, 좋은 곳. – Phoenix
일반적으로, 당신이하고있는 일을 절대적으로 알지 못하는 한, 그것을 사용하는 것이 당신의 문제를 해결할 최선의 방법이라는 것을 확신하지 않는 한,'exec' 또는'eval'을 사용하지 마십시오. 'exec'와'eval'은 대개 많은 비용을 들이지 않아야합니다. 사용자 입력에 사용될 때 거의 해결할 수없는 보안 위험 요소이며, 코드를 상당히 느려질 수 있습니다 ('exec'는 현지인을 조작 할 수 있기 때문에 , 그것은 사용되는 범위에서 지역 변수에 대한 최적화를 적극적으로 꺼 놓음), 버그를 찾기 어렵고, 리팩터링에 대한 번거 로움, 가독성을 줄이는 등 등을 포함합니다. – l4mpi