千家信息网

Python中eval函数的表达式有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了Python中eval函数的表达式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。eval 是干嘛的?解析字符串
千家信息网最后更新 2026年11月02日Python中eval函数的表达式有哪些

这篇文章主要介绍了Python中eval函数的表达式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

eval 是干嘛的?

解析字符串表达式并执行,并返回一个值

语法格式

eval(expression[, globals[, locals]])

expression:表达式字符串

globals:必须是一个字典

locals:可以是任何 map 对象

最简单的表达式栗子

栗子一

print(eval("123"))print(eval("True"))print(eval("(1,2,3)"))print(eval("[1,2,3]")) # 输出结果123True(1, 2, 3)[1, 2, 3]

栗子二

print(eval("1+2")) x = 1print(eval('x+1'))# 输出结果32

栗子三

a = 1b = 2print(eval("[a,b]")) # 输出结果[1, 2]

带上 globals

# 使用 globalsx = 10g = {"x": 5}print(eval("x+1", g))# 输出结果6

在 eval 中提供了globals 参数

eval 的作用域就是 g 指定的这个字典,外面的 x = 10 被屏蔽掉了,eval 是看不见的,所以使用了 x 为 5 的值

x = 10y = 5g = {"x": 5}print(eval("x+1+y", g)) # 输出结果5    print(eval("x+1+y", g))  File "", line 1, in NameError: name 'y' is not defined

因为 global 参数没有 y 变量值,所以报错了

带上 locals

# 使用 localsa = 1g = {"a": 2, "b": 3}l = {"b": 30, "c": 4} print(eval("a+b+c", g, l))# 输出结果36
  • eval 的作用域变成了 globals + locals

  • locals 作用域优先级会高于 globals

  • locals 参数里面的值会覆盖 globals 参数里面的值

字符串转字典

# 字符串转字典jsons = "{'a':123,'b':True}"print(type(eval(jsons))) # 输出结果

带上 globals

print(eval("{'name':'linux','age':age}", {"age": 123}))# 输出结果{'name': 'linux', 'age': 123}

带上 locals

print(eval("{'name':'linux','age':age}", {"age": 123}, {"age": 24})) # 输出结果{'name': 'linux', 'age': 24}

内置函数栗子

# 内置函数print(eval("dir()"))print(eval("abs(-10)"))  # 输出结果['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'g', 'jsons', 'l', 'x', 'y']10

报错的栗子

栗子一

print(eval("aa")) # 输出结果    print(eval("aa"))  File "", line 1, in NameError: name 'aa' is not defined

栗子二

print(eval("[a,b,c]"))# 输出结果    print(eval("[a,b,c]"))  File "", line 1, in NameError: name 'c' is not defined

栗子三

print(eval("if x: print(x)"))# 输出结果    print(eval("if x: print(x)"))  File "", line 1    if x: print(x)    ^SyntaxError: invalid syntax

因为 eval() 只接受表达式任何其他语句(如if、for、while、import、def、class)都将引发错误

感谢你能够认真阅读完这篇文章,希望小编分享的"Python中eval函数的表达式有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

结果 输出 栗子 表达式 函数 参数 字典 字符 字符串 篇文章 作用 价值 优先级 兴趣 同时 对象 就是 更多 朋友 格式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 喔噻互联网科技有限公司 互联网电商科技 互联网是不是新科技 互联网科技的英文 广西互联网科技公司 哈尔滨秒房互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 佳云科技和互联网广告 南平创想时代互联网科技有限公司 智腾互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 中国互联网十大科技股排名 佛山市拉法互联网科技有限公司 互联网科技公司营业执照怎么办理 互联网科技实习生岗位 工业互联网科技创业 互联网领先科技活动 保山互联网科技靠谱吗 长沙易易互联网科技有限公司 瑰夏咖啡 互联网巨头科技公司 允成互联网科技有限公司融资 中和天地互联网科技有限公司 银行科技岗属于互联网吗 启辰互联网科技 互联网领先科技宣传片 领航科技大厦互联网公司 广东鹅鹅鹅互联网科技有限公司 信承诺互联网科技有限公司
0