What are the expressions of eval function in Python
This article mainly introduces the expression of the eval function in Python, which has a certain reference value, interested friends can refer to, I hope you can learn a lot after reading this article, the following let Xiaobian take you to understand.
What does eval do?
Parses the string expression and executes it, and returns a value
Syntax format eval (expression [, globals [, locals]])
Expression: expression string
Globals: must be a dictionary
Locals: can be any map object
The simplest expression, Chestnut.
Chestnut one
Print (eval ("123") print (eval (" True ")) print (eval (" ((1meme 2jue 3) ")) print (eval (" [1meme 2mei 3])) # output result 123True (1meme 2jue 3) [1meme 2jue 3]
Chestnut two
Print (eval ("1x 2")) x = 1print (eval ('x # 1')) # output result 32
Chestnut three
A = 1b = 2print (eval ("[AMaginb]")) # output result [1,2] with globals# use globalsx = 10g = {"x": 5} print (eval ("x" 1 ", g)) # output result 6
The globals parameter is provided in eval
The scope of eval is the dictionary specified by g, the outer x = 10 is masked, and eval is invisible, so a value of x = 5 is used.
X = 10y = 5g = {"x": 5} print (eval ("x 1y", g)) # output result 5 print (eval ("x x 1y", g)) File ", line 1, in NameError: name 'y' is not defined
Because the global parameter has no y variable value, it has been reported incorrectly
With locals#, use localsa = 1g = {"a": 2, "b": 3} l = {"b": 30, "c": 4} print (eval ("a+b+c", g, l)) # output result 36
The scope of eval has become globals + locals
Locals scope priority will take precedence over globals
The value in the locals parameter overrides the value in the globals parameter
String-to-name':'linux','age':age dictionary # string-to-string dictionary jsons = "{'axiaqiaohuo 123" print (type (eval (jsons) # output with globalsprint (eval ("{'name':'linux','age':age}", {"age": 123}) # output {' name':'linux','age': 123} with localsprint (eval ("{'name':'linux','age':age}") {"age": 123}, {"age": 24}) # output result {'name':' linux', 'age': 24} built-in function Chestnut # built-in function print (eval ("dir ()") print (eval ("abs (- 10)") # output result [_ _ annotations__',' _ builtins__','_ cached__','_ doc__','_ file__' '_ _ loader__',' _ _ name__','_ _ package__','_ _ spec__','a chestnut, 'baked,' grubbed, 'jsons',' lager, 'xmom,' y'] 10 false chestnuts
Chestnut one
Print (eval ("aa")) # output result print (eval ("aa")) File ", line 1, in NameError: name 'aa' is not defined
Chestnut two
Print (eval ("[a ~ ~ b ~ m ~ c])) # output result print (eval (" [a ~ ~ b ~ c] ")) File", line 1, in NameError: name'c'is not defined
Chestnut three
Print (eval ("if x: print (x)") # output result print (eval ("if x: print (x)") File ", line 1 if x: print (x) ^ SyntaxError: invalid syntax
Because eval () only accepts expressions any other statements (such as if, for, while, import, def, class) will throw an error
Thank you for reading this article carefully. I hope the article "what are the expressions of eval functions in Python" shared by the editor will be helpful to you. At the same time, I also hope that you will support us and pay attention to the industry information channel. More related knowledge is waiting for you to learn!