内置函数---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 = 10
exec(code,{‘print‘:print},)
print(a)

指定global参数

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‘"

原文地址:https://www.cnblogs.com/FWF1944/p/10887339.html

时间: 2024-10-19 11:24:11

内置函数---eval、exec、compile的相关文章

内置函数—eval、exec、compile

内置函数----eval.exec.compile eval()将字符串类型的代码执行并返回结果.print(eval('1+2+3+4'))输出:10 exec() 将字符串类型的代码执行.print(exec("1+2+3+4"))exec("print('hello,world')")指定global参数code = '''import os print(os.path.abspath('.'))'''code = '''print(123)a = 20pri

Python内置函数(20)——exec

英文文档: exec(object[, globals[, locals]]) This function supports dynamic execution of Python code. object must be either a string or a code object. If it is a string, the string is parsed as a suite of Python statements which is then executed (unless a

29 内置方法 eval | exec 元类 单例

eval与exec内置方法 将字符串作为执行目标,得到响应结果 eval常用作类型转换:该函数执行完有返回值 exec拥有执行更复杂的字符串:可以形成名称空间 eval内置函数的使用场景:   1.执行字符串会得到相应的执行结果   2.一般用于类型转化,得到dict.list.tuple等 dic_str = "{'a': 1, 'b': 2, 'c': 3}" print(eval(dic_str)) list_str = "[1, 2, 3, 4, 5]" p

python 内置函数eval()、exec()、compile()

eval 函数的作用: 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式,而不是复杂的代码逻辑.    eval(source, globals=None, locals=None, /) 参数说明:    source:必选参数,可以是字符串,也可以是一个任意的code(代码)对象实例(可以通过complie函数创建).    如果它是一个字符串,它会被当作一个(使用globals和locals参数作为全局和本地命名空间的)python表达式进行分析和解释. global

python内置函数 eval()、exec()以及complie()函数

1.eval函数 eval() 函数用来执行一个字符串表达式,并返回表达式的值. eval(expression[, globals[, locals]]) 参数 expression -- 表达式. globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象. locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象. 返回值 返回表达式计算结果. 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式(注意eval不支持任何形式的赋值

内置函数:exec、eval、compile

eval:将字符串内的代码执行,有返回值,用于简单的计算exec:将字符串内的代码执行,没有返回值,用于简单的逻辑判断 均可以读取文件进行执行 info_str = '1+2+3' couunt = eval(info_str) couunt1 = exec(info_str) print(couunt)#返回6 print(couunt1)#无返回值 jud =''' def func(a,b): return a if a>b else b func(1,2) ''' exec(jud)#无

内置函数——eval、exec、compile

eval() 将字符串类型的代码执行并返回结果 print(eval('1+2+3+4')) exec()将自字符串类型的代码执行 print(exec("1+2+3+4")) exec("print('hello,world')")  指定global参数 compile  将字符串类型的代码编译.代码对象能够通过exec语句来执行或者eval()进行求值. 参数说明: 1. 参数source:字符串或者AST(Abstract Syntax Trees)对象.即

Python标准库:内置函数eval(expression, globals=None, locals=None)

本函数是用来动态地执行一个表达式的字符串,或者compile函数编译出来的代码对象.参数expression是一个表达式字符串,或者表示编译出来代码对象的名称:参数globals是全局命名空间,可以指定执行表达式时的全局作用域的范围,比如指定某些模块可以使用.如果本参数缺省,就使用当前调用这个函数的当前全局命名空间:参数locals是局部作用域命名空间,是用来指定执行表达式时访问的局部命名空间.如果全局命名空间参数出现,但缺省内置模块,那么会自动拷贝这个模块到全局命名空间,意味着无论怎么设置,都

python eval()内置函数

python有一个内置函数eval(),可以将字符串进行运行. 通过help(eval)查看帮助文档 Help on built-in function eval in module builtins: eval(source, globals=None, locals=None, /) Evaluate the given source in the context of globals and locals. The source may be a string representing a