Python eval()

eval()函数执行作为参数给出的表达式。表达式被计算并解析为有效的 python 语句。表达式始终是字符串,并且对于eval()函数是必需的。

 **eval(expression, globals=None, locals=None)** #Where expression can be a string to evalate 

评估()参数:

取 3 个参数,其中第一个参数是强制的,另外两个是可选的。

参数 描述 必需/可选
表情 这个参数是一个字符串,它被解析并作为 python 表达式执行 需要
全球 这是一本字典。它用于指定可执行的表达式。 可选择的
本地人 它指定eval()中的局部变量和方法 可选择的

评估()返回值

| 投入 | 返回值 |
| 表示 | 表达式的结果 |
| 省略了全局变量和局部变量 | 表达式在当前范围内执行 |
| 全局存在;本地人被省略了 | 全局变量和局部变量都将使用全局变量 |
| 全球和本地都存在 | 根据参数的结果 |

Python 中eval()方法的示例

示例 1:演示eval()的使用

 # Perimeter of Square
def calculatePerimeter(l):
    return 4 * l

# Area of Square
def calculateArea(l):
    return l * l

exp = input("Type a function: ")

for l in range(1, 5):
    if exp == "calculatePerimeter(l)":
        print("If length is ", l, ", Perimeter = ", eval(exp))
    elif exp == "calculateArea(l)":
        print("If length is ", l, ", Area = ", eval(exp))
    else:
        print("Wrong Function")
        break 

输出:

Type a function: calculateArea(l)
If length is  1 , Area =  1
If length is  2 , Area =  4
If length is  3 , Area =  9
If length is  4 , Area =  16 

示例 2:当全局参数和局部参数都被省略时,eval()的工作方式。

 from math import *
print(eval('dir()')) 

输出:

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'os', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc'] 

示例 3:将空字典作为全局参数传递

 from math import *
print(eval('dir()', {}))

# The code will raise an exception
print(eval('sqrt(25)', {})) 

输出:

['__builtins__']
Traceback (most recent call last):
  File "<string>", line 5, in <module>print(eval('sqrt(25)', {}))
  File "<string>", line 1, in <module>NameError: name 'sqrt' is not defined</module></string></module></string> 

示例 4:使某些方法可用

 from math import *
print(eval('dir()', {'sqrt': sqrt, 'pow': pow})) 

输出:

['__builtins__', 'pow', 'sqrt'] 

示例 5:传递全局和局部字典

 from math import *

a = 169
print(eval('sqrt(a)', {'__builtins__': None}, {'a': a, 'sqrt': sqrt})) 

输出:

13.0 

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/240348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:21
下一篇 2024-12-12 12:21

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29

发表回复

登录后才能评论