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
是如何只打印一次的。
更具体地说,如果我有这样的代码
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
是如何只打印一次的。