Правильное использование range (), почему pylint жалуется: на встроенный диапазон ссылаются, когда он не повторяется

Я столкнулся с этой же проблемой сегодня утром, но ни один из ответов выше не предоставил мне решение.

В конце концов я понял, что проблема связана с тем, что я изменил DocumentRoot на подпапку каталога www , так как раньше я работал над проектом Symfony2 внутри www.

С новым проектом, над которым я работаю внутри www, этот старый каталог DocumentRoot больше не существует, поэтому Apache не смог запустить.

wampserver -> Apache -> httpd.conf, затем найдите «DocumentRoot» и убедитесь, что каталог, на который указывает он, или изменит его на тот, который делает.

Спасибо RiggsFolly, это был из-за вашего намека на просмотр событий выше, что я нашел проблему.

2
задан juanpa.arrivillaga 5 March 2019 в 18:08
поделиться

1 ответ

Я думаю, что Пилинт не оправдывает это предупреждение правильно.

Обоснование на официальном документе

(возвращает итератор в Python 3)

подходит для итератора (например, map ) но не для диапазона.

Чтобы легко увидеть разницу между объектом iterator и объектом non-iterator, вы можете выполнить следующие строки

r = range(5)
print(list(r)) # [0, 1, 2, 3, 4]
print(list(r)) # [0, 1, 2, 3, 4]
m = map(int, '01234')
print(list(m)) # [0, 1, 2, 3, 4]
print(list(m)) # []

iterator потребляет элементы.

Однако я не думаю, что это хорошая практика, потому что у вас может возникнуть соблазн использовать его как список, который в некоторых случаях может быть медленнее.

давайте возьмем эти 2 примера.

r = range(500000)
l = list(r)

%%time
for i in range(200):
    for k in r:
        pass
# 6.7 sec on my computer

%%time
for i in range(200):
    for k in l:
        pass

# 4.5 sec on my computer

Основное различие заключается в том, что list загружаются в память, что позволяет быстрее выполнять итерации.

Редактировать: Если вы ищете скорость, вы можете использовать список, в противном случае, возможно, вам следует использовать диапазон.

Я открыл вопрос на Pylint ранее сегодня, если это стоит запроса на извлечение, я обработаю его позже

0
ответ дан BlueSheepToken 5 March 2019 в 18:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: