2017-11-13 8 views
3

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이 '파이썬 3.5'를 제외하고 if보다 낫습니까? 에서 볼 django.conf.urls.url에서 전달 하나의 콜백 인수가 있습니다 : ifwhile보다 더 읽을 것

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

가.

답변

2

이것은 콜백이 다른 콜백에서 래핑 된 횟수와 관련이 있습니다.

whileif과 동일하므로 별 문제가되지 않습니다. 그러나 그 자신이 콜백이었던 콜백을 가진 lookup_str을 호출 한 누군가가 while 일을 계속하는 것은 계속합니다.