Python新手:这段代码有什么作用?

时间:2009-06-21 18:10:57

标签: python

这是Google AppEngine教程的一个片段。

application = webapp.WSGIApplication([('/', MainPage)], debug=True)

我不太确定 debug=True 在构造函数调用中的作用。 它是否创建名为debug的局部变量,为其分配True,并将其传递给构造函数,或者这是在构造函数中设置类实例成员变量值的方法吗?

3 个答案:

答案 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