exec()中的python3 print()

时间:2013-05-30 19:48:37

标签: 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'>

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

2 个答案:

答案 0 :(得分:7)

简单!

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

在一个例子中,调用如:

exec("print('Hello')")

与:

相同
exec("print('Hello')", None, None)

答案 1 :(得分:3)

print返回None,这是可选参数的有效参数。