先看一下exec函数在命令行中的简单效果示例,完成对某个变量的赋值操作,使一个字符串的值和放在代码里运行没有区别:
>>> exec('bed=5')
>>> bed
5
>>> exec('bedict={}')
>>> bedict
{}
假定输入的值为10, 2, [[1, 3], [10, 4]] ,那么我们想要通过解包为V, n, vw 这三个变量赋值,那么相应的代码为:
exec('V, n, vw = ' + input())
print(V, n, vw)
结果为:10 2 [[1, 3], [10, 4]]
下面是对Python3中exec函数的介绍
- 描述:exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。
- 语法:
exec(object[, globals[, locals]]) - 参数
object:必选参数,表示需要被指定的 Python 代码。它必须是字符串或 code 对象。如果 object 是一个字符串,该字符串会先被解析为一组 Python 语句,然后再执行(除非发生语法错误)。如果 object 是一个 code 对象,那么它只是被简单的执行。 globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。 locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与 globals 相同的值。 - 返回值:exec 返回值永远为 None。
- 实例1:执行打印语句
>>>exec('print("Hello World")')
Hello World
- 实例2:多行语句字符串
>>> exec ("""for i in range(5):
... print ("iter time: %d" % i)
... """)
iter time: 0
iter time: 1
iter time: 2
iter time: 3
iter time: 4
- 实例3
x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
y = 20
exec(expr)
exec(expr, {'x': 1, 'y': 2})
exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
func()
输出结果:60
33
34
|