首先我想说明一下,exec是一个比较偏门的函数,在绝大多数的情况下,你并不会使用这个函数。而且使用它时,还会影响代码的可读性,使简单的代码变得不易明白。但在一定的情况下,它可以解决一些你很难解决的问题。
exec() 函数的作用很好描述,就是执行以string类型存储的Python代码。
代码:
a = "e = 1"
exec(a)
print(e)
结果:
1
既然只是执行代码python代码,那为何不直接写在文件中执行呢?
假设现在有这么一个场景,你需要引入外部的工具包,你可能需要从两个包中引入工具小包(当然这个假设本来就很扯,但却可以说明一下exec() 函数 的作用),这两个包你只需要一种,但却需要根据实际情况动态变化。当然你可以将两个包同时引入来解决这个问题,但这样会将你实际不需要的资源加载进来,会产生浪费。这时你就需要 exec() 函数 来完成包的动态加载了。
a = 1
if a == 1:
e = "math"
else:
e = "time"
exec("import " + e)
这样就好了,动态加载的包会减少资源的浪费。但同时,就像开始时说的那样,代码的可读性降低了。
这只是我的浅显理解,如果有问题,欢迎来锤。
青冥有晓月