广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中eval函数的表达式作用示例
  • 222
分享到

Python中eval函数的表达式作用示例

2024-04-02 19:04:59 222人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录eval 是干嘛的?语法格式最简单的表达式栗子带上 globals带上 locals字符串转字典带上 globals带上 locals内置函数栗子报错的栗子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]")) 
# 输出结果
123
True
(1, 2, 3)
[1, 2, 3]

栗子二


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

栗子三


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

带上 globals


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

在 eval 中提供了globals 参数

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


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

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

带上 locals


# 使用 locals
a = 1
g = {"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))) 
# 输出结果
<class 'dict'>

带上 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 "<string>", line 1, in <module>
NameError: name 'aa' is not defined

栗子二


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

栗子三


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

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

以上就是python中eval函数的表达式用法示例的详细内容,更多关于Python中eval函数表达式的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python中eval函数的表达式作用示例

本文链接: https://www.lsjlt.com/news/137135.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中eval函数的表达式作用示例
    目录eval 是干嘛的?语法格式最简单的表达式栗子带上 globals带上 locals字符串转字典带上 globals带上 locals内置函数栗子报错的栗子eval 是干嘛的? ...
    99+
    2022-11-12
  • Python eval 函数动态地计算数学表达式
    ​本文中,云朵君将和大家一起从如下两个方面展开学习。Python的eval()如何工作如何使用eval()来动态地计算任意基于字符串或基于编译代码的输入此外,后期推文将一起学习如何使用 Python 的 ​eval()​ 来编码一个交互式地...
    99+
    2023-05-14
    代码 Python 字符串
  • 利用Python+eval函数构建数学表达式计算器
    目录eval() 的安全问题限制globals和locals限制内置名称的使用限制输入中的名称将输入限制为只有字数使用eval()与input()函数构建一个数学表达式计算器总结Py...
    99+
    2022-11-11
  • JavaScript中函数表达式的示例分析
    这篇文章将为大家详细讲解有关JavaScript中函数表达式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript函数表达式一、序 &nb...
    99+
    2022-10-19
  • Python函数介绍:eval函数的功能和示例
    Python函数介绍:eval函数的功能和示例在Python编程中,eval函数是非常有用的一个函数。eval函数可以将一个字符串作为程序代码进行执行,它的功能非常强大。在本文中,我们将介绍eval函数的详细功能,以及一些使用示例。一、ev...
    99+
    2023-11-04
    功能 示例 eval函数
  • python中的eval函数使用实例
    目录1 eval函数的简介和语法:2 eval()函数使用实例:eval()函数常被称为评估函数,它的功能是去掉参数最外侧引号,变成python可执行的语句,并执行语句的函数。 1 ...
    99+
    2022-11-13
    python eval函数 python eval函数使用
  • JSGenerator函数yield表达式示例详解
    目录什么是 Generator 函数yield 表达式yield 表达式和return语句的区别yield* 表达式next() 方法的参数与 Iterator 接口的关系for.....
    99+
    2022-11-13
    JS Generator函数yield表达式 JS Generator 函数
  • Python+eval函数实现动态地计算数学表达式详解
    目录Python 的 eval()第一个参数:expression第二个参数:globals第三个参数:locals用 eval() 计算表达式布尔表达式数学表达式通用表达式Pyth...
    99+
    2022-11-11
  • JavaScript中Generator函数yield表达式示例详解
    以上就是JavaScript中Generator函数yield表达式示例详解的详细内容,更多请关注编程网其它相关文章!...
    99+
    2022-11-22
    javascript
  • python中eval的用法示例
    python中eval是一个内置函数,它主要是用来将字符串str当成有效的表达式来求值并返回计算结果,比如变量赋值时,等号右边的表示是写成字符串的格式,返回值就是这个表达式的结果;它还可以把list、tuple、dict 和 string等...
    99+
    2022-10-05
  • Java中使用Lambda表达式和函数编程示例
    目录1、简单介绍 2、Lambdas和Scopes3、Lambdas与局部变量4、Lambda体与局部变量5、Lambdas和'This'和'Super'关键字6、Lambdas和E...
    99+
    2022-11-12
  • Java8中Lambda表达式与函数式接口的示例分析
    这篇文章将为大家详细讲解有关Java8中Lambda表达式与函数式接口的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java8被称作Java史上变化最大的一个版本。其中包含很多重要的新特性,最核...
    99+
    2023-05-30
    java lambda
  • python中eval函数的作用是什么
    eval函数的作用是将字符串表达式进行求值,并返回计算结果。它可以将一个字符串当作一个Python表达式来执行,比如对一个算术表达式...
    99+
    2023-09-22
    python
  • python中eval函数的作用有哪些
    eval函数在Python中的作用如下:1. 字符串转换为表达式:eval函数可以将一个字符串作为参数,并将其解析为一个表达式,然后...
    99+
    2023-10-12
    python
  • Python中eval()函数的使用
    今天给大家分享一下Python中的eval()函数,如果感觉博主的文章还不错的话,希望大家点赞支持一下博主 文章目录 eval()函数语法实例实例1实例2实例3 eval()函...
    99+
    2023-10-23
    python
  • Kotlin高阶函数与Lambda表达式示例详解
    目录正文1.函数类型2.高阶函数3.系统标准高阶函数4.Lambda表达式正文 Kotlin中函数都是头等的,这意味着它可以存储在变量与数据结构中、作为参数传递给其他高阶函数以及从...
    99+
    2022-12-08
    Kotlin 高阶函数Lambda Kotlin Lambda
  • js 中的switch表达式使用示例
    前言 switch 语句用于基于不同条件执行不同动作。 JavaScript Switch 语句 请使用 switch 语句来选择多个需被执行的代码块之一。 switch(表达式...
    99+
    2022-11-15
    switch 表达式
  • javascript立即执行函数表达式IIFE的示例分析
    这篇文章主要为大家展示了“javascript立即执行函数表达式IIFE的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript立即执行函数...
    99+
    2022-10-19
  • Python中用函数还是用复杂的表达式
    本篇内容主要讲解“Python中用函数还是用复杂的表达式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中用函数还是用复杂的表达式”吧!要不要使用复杂表达式Perl语言的原作者Larr...
    99+
    2023-06-02
  • Python正则表达式匹配中文用法示例
    本文实例讲述了Python正则表达式匹配中文用法。分享给大家供大家参考,具体如下: #!/usr/bin/python #-*- coding:cp936-*-#思路,将str转换成unicode,方可...
    99+
    2022-06-04
    示例 中文 正则表达式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作