В чем разница между some_list = [a, b] и some_list = [a] + b? - PullRequest
0 голосов
/ 19 июня 2020

В django, кажется,

urlpatterns = [
    path('admin/', admin.site.urls),
    path('catalog/', include('catalog.urls')),
    path('', RedirectView.as_view(url='/catalog/')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

и

urlpatterns = [
    path('admin/', admin.site.urls),
    path('catalog/', include('catalog.urls')),
    path('', RedirectView.as_view(url='/catalog/')),
    static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
]

разные. Однако на мой взгляд, кажется, что some_list = [a, b] и some_list = [a] + b должны быть одним и тем же объектом. Я прав?

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Есть разница.

>>> a = 1
>>> b = [2]
>>> [a, b] # build a list with the elements a and b
[1, [2]]
>>> [a] + b # build a list with the element a, then build a new list with all the elements from [a] and b.
[1, 2]
1 голос
/ 19 июня 2020

Фактически, «static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)» будет

return [
    re_path(
        r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), 
        view, 
        kwargs=kwargs
    ),
]

, который является списком.

Таким образом, ваш первый код получит список вроде:

[url_paterns, url_paterns, ...]

Ваш второй код получит список вроде:

[url_paterns, url_paterns, ..., [url_paterns]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...