Python은 eval 함수를 사용하여 동적 표현식 프로세스를 수행합니다.
eval(expression, globals=None, locals=None)
The arguments are a string and optional globals and locals. If provided, globals must be a dictionary. If provided, localscan be any mapping object.
The expression argument is parsed and evaluated as a Python expression (technically speaking, a condition list) using the globals and locals dictionaries as global and local namespace. If the globals dictionary is present and lacks ‘__builtins__', the current globals are copied into globals before expression is parsed. This means that expressionnormally has full access to the standard builtins module and restricted environments are propagated. If the localsdictionary is omitted it defaults to the globals dictionary. If both dictionaries are omitted, the expression is executed in the environment where eval() is called. The return value is the result of the evaluated expression. Syntax errors are reported as exceptions. Example:
>>> x = 1
>>> eval('x+1')
이
This function can also be used to execute arbitrary code objects (such as those created by compile()). In this case pass a code object instead of a string. If the code object has been compiled with 'exec' as the mode argument, eval()‘s return value will be None.
Hints: dynamic execution of statements is supported by the exec() function. The globals() and locals() functions returns the current global and local dictionary, respectively, which may be useful to pass around for use by eval() or exec().
See ast.literal_eval() for a function that can safely evaluate strings with expressions containing only literals.
동적 표현식 값 구하기 실행
설명:
1. 동적 문장을 실행하고 문장이 실행하는 값을 되돌려줍니다.
>>> eval('1+2+3+4')
십
2. 첫 번째 매개 변수는 문장 문자열이고,globals 매개 변수와locals 매개 변수는 선택할 수 있는 매개 변수입니다. 제공하면,globals 매개 변수는 사전이고,locals 매개 변수는mapping 대상입니다.
3. globals 매개 변수는 코드가 실행될 때 사용할 전역 변수를 지정하고 코드가 실행된 전역 변수를 수집하는 데 사용됩니다.
>>> g = {'num':2}
>>> eval('num + 2') #num
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
eval('num + 2')
File "<string>", line 1, in <module>
NameError: name 'num' is not defined
>>> eval('num + 2',g) #g num,
4
4. locals 매개 변수는 코드가 실행될 때 사용할 수 있는 국부 변수와 코드가 실행된 국부 변수를 수집하는 데 사용됩니다
>>> g = {'num1':2}
>>> l = {'num2':4}
>>> eval('num1+num2',g,l)
6
5. 코드가 성공적으로 실행될 수 있도록 globals 매개 변수 사전에는 __builtins__ 이 key를 사용하면 Python에서 자동으로 key를 __ (으) 로 추가합니다.builtins__ ,value는builtins 모듈의 인용입니다.코드가builtins 모듈을 사용하지 않도록 제한하려면 글로벌에 키를 __로 추가해야 합니다builtins__,value는 {} 항목이면 됩니다.
>>> g = {}
>>> eval('abs(-1)',g)
1
>>> g = {'__builtins__':{}}
>>> eval('abs(-1)',g) #
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
eval('abs(-1)',g)
File "<string>", line 1, in <module>
NameError: name 'abs' is not defined
6. globals 파라미터가 예를 제공하지 않으면, Python은 기본적으로 globals () 함수를 사용하여 되돌아오는 사전을 호출합니다.locals 파라미터가 제공되지 않을 때, 기본적으로는globals 파라미터를 사용하여 호출합니다.
>>> num = 1
>>> eval('num+2')
3
>>> globals() # num key
{'__doc__': None, 'num': 1, '__package__': None, '__name__': '__main__', '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__builtins__': <module 'builtins' (built-in)>}
>>> eval('num+2',{}) #locals ,locals =globals
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
eval('num+2',{})
File "<string>", line 1, in <module>
NameError: name 'num' is not defined
>>> l = locals()
>>> eval('num+2',{},l) #locals num key,
3
>>> locals()
{'__doc__': None, 'l': {...}, 'num': 1, '__package__': None, '__name__': '__main__', '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__builtins__': <module 'builtins' (built-in)>}
>>>
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.