python 内置函数

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