2

In python3, when I run

>>> 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'>

I mean in the Python3, the arg2 of exec() expects a dict, but we can still put a print() function which is not a dict. why?

2 Answers 2

7

Simple!

It's acceptable because its value is None (it can accept None or a dict), which is the default value for the argument.

In a example, a call such as:

exec("print('Hello')")

Is the same as:

exec("print('Hello')", None, None)
Sign up to request clarification or add additional context in comments.

Comments

3

print returns None, which is a valid argument for an optional parameter.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.