我会给出一个稍微高级的答案。在Python中,函数是第一类对象。这意味着它们可以“动态创建,销毁,传递给函数,作为值返回,并具有编程语言中其他变量的所有权限”。
在Python中调用函数/类实例意味着调用该__call__对象的方法。对于旧式类,类实例也是可调用的,但前提是创建它们的对象具有__call__方法。这同样适用于新式类,除了新实例类没有“实例”的概念。相反,它们是“类型”和“对象”。
从Python 2数据模型页面引用,对于函数对象,类实例(旧样式类)和类对象(新样式类),“ x(arg1, arg2, ...)是”的简写x.__call__(arg1, arg2, ...)。
因此,无论何时使用简写定义函数,def funcname(parameters):您实际上只是使用方法创建对象,__call__而简写__call__就是命名实例并使用包含调用参数的括号来跟随它。因为函数是Python中的第一类对象,所以它们可以使用动态参数动态创建(因此接受动态参数)。这对于稍后将阅读的装饰器函数/类非常方便。
现在我建议阅读官方Python教程。