12.1、python内置函数——eval、exec、compile

简介: 内置函数——eval、exec、compileeval() 将字符串类型的代码执行并返回结果print(eval('1+2+3+4'))exec()将自字符串类型的代码执行print(exec("1+2+3+4"))exec("print('hello,world')")code = '''import osprint(os.

内置函数——eval、exec、compile

eval() 将字符串类型的代码执行并返回结果

print(eval('1+2+3+4'))

exec()将自字符串类型的代码执行

print(exec("1+2+3+4"))exec("print('hello,world')")

code = '''

import os

print(os.path.abspath('.'))

'''code = '''

print(123)

a = 20

print(a)

'''a = 10exec(code,{'print':print},)print(a)

compile  将字符串类型的代码编译。

代码对象能够通过exec语句来执行或者eval()进行求值。

参数说明:

1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。

2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。

3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。

>>> #流程语句使用exec>>> code1 = 'for i in range(0,10): print (i)'>>> compile1 = compile(code1,'','exec')

>>> exec (compile1)

1

3

5

7

9

>>> #简单求值表达式用eval>>> code2 = '1 + 2 + 3 + 4'>>> compile2 = compile(code2,'','eval')

>>> eval(compile2)

>>> #交互语句用single>>> code3 = 'name = input("please input your name:")'>>> compile3 = compile(code3,'','single')

>>> name #执行前name变量不存在Traceback (most recent call last):

  File "<pyshell#29>", line 1, in <module>

    name

NameError: name 'name' is not defined

>>> exec(compile3) #执行时显示交互命令,提示输入please input your name:'pythoner'>>> name #执行后name变量有值"'pythoner'"

目录
相关文章
|
3月前
|
Python
Python eval()函数的使用
Python eval()函数的使用
49 1
|
4月前
|
Python
Python 中 eval 与 exec 的相同点和不同点
【7月更文挑战第17天】相同点: `eval` 和 `exec` 都能动态执行 Python 代码字符串。 不同点: 返回值 - `eval`: 计算表达式的值并返回结果。 - `exec`: 执行一系列语句,不返回任何值。 作用范围 - `eval`: 只能在当前作用域计算表达式。 - `exec`: 可以修改全局和局部变量。 输入的代码类型 - `eval`: 通常用于计算一个表达式。 - `exec`: 用于执行一系列语句。 总之,`eval` 更适合简单的表达式求值,而 `exec` 适用于执行更复杂的代码块。使用时需注意安全性,避免执行不可信的用户输入。
35 11
|
5月前
|
JSON 数据格式 索引
Python内置函数如`print()`输出信息,`len()`计算长度
【6月更文挑战第23天】Python内置函数如`print()`输出信息,`len()`计算长度,`type()`识别类型,`range()`生成序列,`sum()`求和,`min()`和`max()`找极值,`abs()`取绝对值,`round()`四舍五入,`sorted()`排序,`zip()`和`enumerate()`组合及遍历,`map()`和`filter()`应用函数。标准库如`os`用于操作系统交互,`sys`处理解释器信息,`math`提供数学运算,`re`支持正则表达式,`json`处理JSON数据。学习这些能提升编程效率。
58 5
|
5月前
|
索引 Python
【超全面】Python内置函数详解(三)
【超全面】Python内置函数详解(三)
|
5月前
|
Java 索引 Python
【超全面】Python内置函数详解(一)
【超全面】Python内置函数详解(一)
|
5月前
|
Sentinel Python
【超全面】Python内置函数详解(二)
【超全面】Python内置函数详解(二)
|
4月前
|
存储 Python
`input()` 函数是 Python 中的一个内置函数,用于从用户那里获取输入。
`input()` 函数是 Python 中的一个内置函数,用于从用户那里获取输入。
|
5月前
|
索引 Python 安全
【Python内功心法】:深挖内置函数,释放语言潜能
【Python内功心法】:深挖内置函数,释放语言潜能
|
5月前
|
Python
Python 内置函数
Python 内置函数
|
6月前
|
Python
Python 内置函数
Python 内置函数