python exec()
函数用于执行python代码块。它是python的内置函数。
exec()函数执行的是代码块,而python中 eval() 函数执行的是表达式。
语法
语法如下:exec(obejct, globals=None, locals=None)
参数
- object:指定要执行python代码块,必须是字符串或者code对象;
- globals:可选参数,globals为字典类型,它可以替换代码块的参数;见例子2
- locals:可选参数, local也为字典参数,也可以替换代码块的参数,只不过当glocals和locals都存在相同的参数时,以locals参数为准,见例子3。
返回值
返回值为None。
程序示例
介绍一些例子了解python exec()函数的使用方法。
例1
没有指定globals和locals参数。
#!/usr/bin/python
# coding=utf-8
a=2
b=3
expr = '''
c=a+b
print(c)
'''
exec(expr)
程序运行结果:
5
例2
指定globals参数,globals字典中参数会替代代码块中的变量。
#!/usr/bin/python
# coding=utf-8
a=2
b=3
expr = '''
c = a+b
print(c)
'''
g={'a': 4, 'b':5} #指定globals参数
exec(expr, g)
程序运行结果:
字符串表达式: 9
从结果中可以看到参数 global字典中的a=4替换了代码块中的a=2,b=5替换了代码块中的b=3,即结果为5+4=9。
例3
同时指定globals和locals参数,locals参数的优先级更高,看下面的例子。
#!/usr/bin/python
# coding=utf-8
a=2
b=3
expr = '''
c=4
sum = a+b+c
print(sum)
'''
gc={'a': 10, 'b':20} #指定globals参数
lc={'b': 30, 'c':40} #指定locals参数
exec(expr, gc, lc) #a=10,b=30,c=4
程序运行结果字符串表达式: 44
globals字典和locals字典有相同的参数b,以locals参数中的b=30为准,所以这里
a=10
b=30
c=4, 因为c为代码块的内部变量不可修改。
结果为10+30+4=44