python编程-内置函数compile(),exec(),complex(),eval()详解

news/2025/2/8 14:18:40 标签: python, 服务器

1. compile() 函数
‌用途‌:将一个字符串源代码编译为字节码对象,这样可以直接被Python解释器执行,或者通过exec()或eval()函数来执行。
‌参数‌:
source:一个字符串或AST(抽象语法树)对象,表示要编译的源代码。
filename:源代码文件名(字符串),用于错误和警告信息中。如果不需要,可以传递一个空字符串。
mode:指定编译模式,它是一个字符串。可以是'exec'(编译为可执行代码),'eval'(编译为单个表达式),或'single'(编译为单个交互式语句)。
flags:可选参数,用于指定编译器的标志。默认值为0。
dont_inherit:如果为True,则不会继承调用者的未来特性标志。默认值为False。
optimize:优化级别。默认为-1,表示使用解释器的默认优化级别。
‌返回值‌:返回一个代码对象(code object),可以使用exec()或eval()函数来执行。‌

示例‌:

python"># 编译并执行一段代码
code = compile('print("Hello, World!")', '<string>', 'exec')
exec(code)

# 编译并求值一个表达式
expr_code = compile('3 + 5', '<string>', 'eval')
result = eval(expr_code)
print(result)  # 输出: 8


2. exec() 函数
‌用途‌:执行储存在字符串或文件中的Python代码。
‌参数‌:
object:可以是一个字符串,也可以是一个代码对象。
globals:一个字典,用于指定全局命名空间。如果未提供,则将使用当前全局命名空间。
locals:一个字典,用于指定局部命名空间。如果未提供,则将使用当前局部命名空间。
‌示例‌:

python"># 执行字符串中的Python代码
code = """
def greet():
    print("Hello, world!")
greet()
"""
exec(code)

执行文件中的Python代码

python"># 假设有一个名为example.py的文件,其内容如下:
# def greet():
#     print("Hello, world!")
# greet()
# 可以使用exec()函数执行该文件中的代码:
with open('example.py', 'r') as file:
    code = file.read()
    exec(code)

3. complex() 函数
‌用途‌:创建一个复数对象,可以接受一个或两个参数,分别表示实部和虚部。
‌参数‌:
real:复数的实部,可以是整数、浮点数或字符串。
imag:复数的虚部,可以是整数、浮点数或字符串。如果只传入一个参数,则该参数将被视为复数的实部,虚部默认为0。
‌返回值‌:返回一个表示复数的复数对象。

‌示例‌:

python"># 创建复数对象
num1 = complex(3, 4)  # (3+4j)
num2 = complex(2.5, -1)  # (2.5-1j)
num3 = complex("1+2j")  # (1+2j)

# 复数运算
sum_num = num1 + num2  # (5.5+3j)
diff_num = num1 - num2  # (0.5+5j)
prod_num = num1 * num2  # (-5+10j)


4. eval() 函数
‌用途‌:将字符串当作有效的Python表达式进行求值并返回结果。
‌参数‌:
expression:一个字符串,表示要求值的表达式或代码。
globals:一个可选的全局命名空间字典。
locals:一个可选的局部命名空间字典。
‌返回值‌:返回表达式的求值结果。‌

示例‌:

python"># 求值表达式
result = eval("2 + 3")
print(result)  # 输出: 5

result = eval("3 + 5 * 2")
print(result)  # 输出:13

# 字符串转换为数据类型
num = eval("42")
print(type(num))  # 输出: <class 'int'>

string = eval("'Hello, World!'")
print(type(string))  # 输出: <class 'str'>


http://www.niftyadmin.cn/n/5844950.html

相关文章

​PDFsam Basic是一款 免费开源的PDF分割合并工具

PDFsam Basic 是一款功能强大的 PDF 工具&#xff0c;专为满足用户对 PDF 文件的各种操作需求而设计。它能够高效地拆分、合并、提取页面、混合以及旋转 PDF 文件&#xff0c;为用户提供灵活的文档处理解决方案。 合并 PDF 文件 PDF 合并是 PDFsam Basic 最受欢迎的功能之一。…

TcpClientTest

ClientTest&#xff1a; using System; using System.Net.Sockets; using System.Text;class TcpClientTest {static void Main(string[] args){try{// 创建一个TcpClient实例并连接到服务器 TcpClient client new TcpClient("1vg5062570.51mypc.cn", 43319);//1v…

团餐订餐系统源码企业订餐小程序写字楼办公区团餐软件开发

市场前景 近年来&#xff0c;随着社会经济的发展和人们生活节奏的加快&#xff0c;团餐市场规模持续扩大&#xff0c;现已稳稳占据了整个餐饮市场三分之一左右的份额&#xff0c;成为了推动餐饮行业发展的重要力量。截至2023年&#xff0c;中国团餐行业市场规模达22350亿元&am…

kafka消费端之分区分配策略

文章目录 概述分区分配策略RangeAssignor分配策略RoundRobinAssignor分配策略StickyAssignor自定义分区分配策略 总结 概述 我们知道kafka的topic可以被分成多个分区&#xff0c;消费者在集群模式下消费时一个消费组内的每个消费者实例只能消费到一个分区的消息&#xff0c;那…

idea——IDEA2024版本创建Sping项目无法选择Java 8

目录 一、背景二、解决方式&#xff08;替换创建项目的源地址&#xff09; 一、背景 IDEA2024创建一个springboot的项目&#xff0c;本地安装的是1.8&#xff0c;但是在使用Spring Initializr创建项目时&#xff0c;发现版本只有17、21、23。 二、解决方式&#xff08;替换创…

sql批量更新和删除语句

1.更新一条数据 update om_sellorder set SOSTATUS2 where id 283d3eb87b134e1c993b70b018406285 2.更新多个数据为某一个特点值 string ID context.Request["ID"]; //需要替换‘,’逗号&#xff0c;不然识别不出ID数据这里注意 ‘ID’ 是一个逗号&#xff08;&a…

Oracle CDB自动处理表空间不足脚本

之前我曾经发过一个自动处理表空间的脚本&#xff0c;可以通过定时任务自动处理表空间不足的问题&#xff1b;但是之前那个脚本没有涵盖CDB模式下的PDB&#xff0c;这里将脚本做了一下更新&#xff0c;可以处理CDB模式下多PDB的表空间问题。 传统模式的脚本请参考这个链接 Or…

自定义v-model修饰符

文章目录 引言I Vue3.4 的用法解构 defineModel() 的返回值,在子组件中访问添加v-model修饰符基于修饰符选择性地调节值的读取和写入方式带参数的 v-model 修饰符II Vue3.4 之前的用法原理带参数的 v-model 修饰符例子引言 v-model 有一些内置的修饰符,例如 .trim,.number 和…