这是Google AppEngine教程的一个片段。
application = webapp.WSGIApplication([('/', MainPage)], debug=True)
我不太确定 debug=True
在构造函数调用中的作用。
它是否创建名为debug
的局部变量,为其分配True
,并将其传递给构造函数,或者这是在构造函数中设置类实例成员变量值的方法吗?
答案 0 :(得分:11)
Python函数接受关键字参数。如果你定义一个这样的函数:
def my_func(a, b='abc', c='def'):
print a, b, c
您可以这样称呼它:
my_func('hello', c='world')
结果将是:
hello abc world
您还可以使用特殊语法支持动态关键字参数:
def my_other_func(a, *b, **c):
print a, b, c
*b
表示b
变量将a
之后的所有非命名参数作为tuple
对象。**c
表示c
变量将所有命名参数作为dict
对象。如果你这样调用这个函数:
my_other_func('hello', 'world', 'what a', state='fine', what='day')
你会得到:
hello ('world', 'what a') {'state': 'fine', 'what': 'day'}
答案 1 :(得分:4)
两者都不是 - webapp.WSGIApplication
采用名为debug
的可选参数,此代码为该参数传递值True
。
WSGIApplication
的参考页面为here,它清楚地显示了可选的debug
参数以及默认为False
的事实,除非明确传入。
当页面进一步说明时,将debug
作为True
传递意味着在处理请求时发生异常时,会向浏览器显示有用的调试信息。
如何获得该效果(特别是,它是否暗示WSGIApplication
实例上存在属性,或者该假设属性如何命名)是一个内部的,未记录的实现细节,我们我不应该担心(当然,如果您做担心,您可以在SDK中研究WSGIApplication
的来源,或者只是想了解有关这些规范的一种可能实现的更多信息! - 。)
答案 2 :(得分:3)
它正在使用命名参数。请参阅Using Optional and Named Arguments。