[code snippet]優先級的妙用

位置參數默認為None,但該參數默認是一個可迭代對象。如果不傳參的話:

In [8]: def func(iter_obj=None):
   ...:     for item in iter_obj:
   ...:         print item
   ...:

In [9]: func()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-08a2da4138f6> in <module>()
----> 1 func()

<ipython-input-8-f880f4d9f102> in func(iter_obj)
      1 def func(iter_obj=None):
----> 2     for item in iter_obj:
      3         print item
      4

TypeError: 'NoneType' object is not iterable

通過優先級來對準備迭代的對象進行替換:

In [10]: def func(iter_obj=None):
    ...:     for item in iter_obj or ():
    ...:         print item
    ...:

In [11]: func()

來源:werkzeug.routing.Map__init__方法:

class Map(object):
    def __init__(self, rules=None, default_subdomain='', charset='utf-8',
                 strict_slashes=True, redirect_defaults=True,
                 converters=None, sort_parameters=False, sort_key=None,
                 encoding_errors='replace', host_matching=False):
       ...

        for rulefactory in rules or ():
            self.add(rulefactory)
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 參考:Werkzeug庫——routing模塊flask 源碼解析:路由odoo(8.0)源碼werkzeug(0...
    顧慎為閱讀 1,848評論 0 1
  • 寫在前面的話 代碼中的# > 表示的是輸出結果 輸入 使用input()函數 用法 注意input函數輸出的均是字...
    FlyingLittlePG閱讀 2,866評論 0 8
  • 內置函數Python解釋器內置了許多功能和類型,總是可用的。他們是按字母順序列在這里。 abs(x)返回一個數的絕...
    uangianlap閱讀 1,263評論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,879評論 1 10
  • 第二十四章-趕盡殺絕 我早知道這么狡猾的藤野軍官不會乖乖地交出人來,他一定是在懷疑我,計算著些什么好對付著我。 “...
    冰寒三尺閱讀 281評論 0 7