2017-11-13 11 views
3
Djangoのドキュメントで

django.conf.urls | Django documentation | Django'if' v.s. `` functools.partial.func`

に、このようなコードがありますwhile`:

class RegexURLPattern(LocaleRegexProvider): 
    ... 
    def lookup_str(self) 
     callback = self.callback 
     # Python 3.5 collapses nested partials, so can change "while" to "if" 
     # when it's the minimum supported version. 
     while isinstance(callback, functools.partial): 
      callback = callback.func 
     ... 

コードが目的球「表示」の引数をコールバックし、それを実行することです。

なぜwhileが 'Python 3.5'を除いてifより優れていますか? で見django.conf.urls.urlから渡された唯一のコールバックの引数は、あり:

def url(regex, view, kwargs=None, name=None): 
    elif callable(view): 
     return RegexURLPattern(regex, view, kwargs, name) 

ifwhileよりも読みやすいようです。

答えて

2

これは引数の数ではなく、コールバックが別のコールバックでラップされた回数についてです。

whileifと同じですので、実際には関係ありません。しかし、コールバック付きのlookup_strというコールバックをコールバックした人がコールすると、whileは引き続き動作します。

関連する問題