1. The Python Tutorial (Official Python Documentation):
Section 4.7. More on Defining Functions: This section explains function definitions. The def statement defines a function object. The number of parameters is fixed at definition time.
Section 5. Built-in Exceptions: This section lists TypeError as an exception "raised when an operation or function is applied to an object of inappropriate type. The associated value is a string giving details about the type mismatch." This includes calling a function with the wrong number of arguments.
(Source: Python Software Foundation, The Python Tutorial, docs.python.org/3/tutorial/controlflow.html#defining-functions and docs.python.org/3/library/exceptions.html#TypeError)
2. The Python Language Reference (Official Python Documentation):
Section 6.3.4. Calls: This section details the process of calling a function. It states: "If there are more positional arguments than there are formal parameter slots, a TypeError exception is raised." In this case, there is one positional argument (False) but zero formal parameter slots for fun().
(Source: Python Software Foundation, The Python Language Reference, docs.python.org/3/reference/expressions.html#calls)
3. MIT OpenCourseWare, 6.0001 Introduction to Computer Science and Programming in Python, Fall 2016:
Lecture 3: Functions: This lecture material covers the fundamentals of defining and calling functions, emphasizing that the arguments provided in a function call must match the parameters in the function's definition. A mismatch is a common programming error that results in a TypeError.
(Source: MIT OpenCourseWare, 6.0001 F16, Lecture 3, ocw.mit.edu)