exec()中的python3 print()

use*_*586 3 python python-3.x python-exec

在python3中,当我运行时

>>> exec("","","")
TypeError: exec() arg 2 must be a dict, not str
>>> exec( "print('Hello')", print("World"), print("!") )
World
!
Hello
>>> type(print("World"))
World
<class 'NoneType'>
Run Code Online (Sandbox Code Playgroud)

我的意思是在Python3中,exec()的arg2需要一个dict,但我们仍然可以放一个不是dict的print()函数.为什么?

Fer*_*ota 7

简单!

这是可以接受的,因为它的值是None(它可以接受None或dict),这是参数的默认值.

在一个例子中,调用如:

exec("print('Hello')")
Run Code Online (Sandbox Code Playgroud)

是相同的:

exec("print('Hello')", None, None)
Run Code Online (Sandbox Code Playgroud)