《Python编程的术与道:Python语言进阶》视频课程
《Python编程的术与道:Python语言进阶》视频课程链接:https://edu.csdn.net/course/detail/28618
exec函数
exec是Python的内置函数,能够执行储存在字符串或文件中的 Python 语句。 eval()函数只能执行计算数学表达式的结果的功能,而exec()能够动态地执行复杂的Python代码,
exec做的是编译和评估字符串中的语句。
首先,我们可以看到它可以完成eval所做的相同工作,例如:
exec("print('so this works like eval')")
- 1
so this works like eval
- 1
result = exec("print('so this works like eval')")
print(type(result))
- 1
- 2
so this works like eval
<class 'NoneType'>
- 1
- 2
list_str = "[5,6,2,1,6]"
list_exec = exec(list_str)
print(type(list_exec))
print(list_exec)
- 1
- 2
- 3
- 4
<class 'NoneType'>
None
- 1
- 2
并且可以比eval做更多,例如:
exec("def test(): print('oooo snap!!!')")
test()
- 1
- 2
oooo snap!!!
- 1
exec("""
def test2():
print('lets see if multi line works....')
""")
test2()
- 1
- 2
- 3
- 4
- 5
- 6
lets see if multi line works....
- 1
在实际项目中,我们有些时候会将Python代码写入一些文件中,举个例子,如以下的fact.txt,它储存了我们想要的Python代码,如下:
# fact.txt
def fact(n):
if n==1:
return 1
else:
return n*fact(n-1)
t = fact(6)
print(t)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
720
- 1
请再次注意,这是一个txt格式的Python代码。那么,我们如何调用它呢?答案就是exec()函数,代码如下:
with open('./files/fact.txt', 'r') as f:
s = f.read()
exec(s)
- 1
- 2
- 3
- 4
720
- 1