exec("func") 是将输入的函数字符串转换一次还是每次调用 func 时都转换?

Does exec("func") convert the inputted function string once or converts it every time the func is called?

更具体地说,如果我有这样的代码

exec("a = lambda x:x**2")

>>> a(2)
4
>>> a(3)
9

每次调用 a 时,exec 会将字符串转换为函数并在输入端对其求值,还是将 a 定义为一次可调用函数每次在 运行 exec() 函数

之后调用 a 时参考它

exec 执行代码就像您自己将代码输入 Python 解释器(或您的 .py 文件)一样。您可以通过在 exec 代码中添加 print 调用来验证这一点:

>>> exec("a = lambda x:x**2; print('running')")
running

>>> a(2)
4

>>> a(9)
81

注意 running 是如何只打印一次的。