Зачем IDE говорит о вводе временной переменной?
Зачем IDE выделяет генератор?
res = 1
[res := res * int(i) for i in input().split()]
print(res)
и говорит, что его надо оформлять вот так:
res = 1
var = [res := res * int(i) for i in input().split()]
print(res)
UPD (ответ-вопрос на комментарии):
Ок. Если PyCharm недоволен, что я использую списковое сокращение, тогда почему он во это пропускает:
def demo_func(x):
return x
[demo_func(i) for i in range(10)]
А это уже нет:
[i for i in range(10)]
Как по мне - он должен тогда либо второй вариант не подчеркивать, либо тогда и 1ый блокировать...
UPD 2:
Получается какая-то дискриминация кода программиста, ведь IDE не выделяет такую запись:
map(int, input().split())
UPD 3:
Сделал замеры (5 раз) и через for получается работает быстрее:
[res := res * int(i) for i in [j for j in range(1000000)]]
Его итоги:
time work: 0:00:00.265001
time work: 0:00:00.218998
time work: 0:00:00.246997
time work: 0:00:00.237997
time work: 0:00:00.253999
Против такого:
for i in [j for j in range(1000000)]:
res *= i
Его итоги:
time work: 0:00:00.180997
time work: 0:00:00.190002
time work: 0:00:00.163006
time work: 0:00:00.156005
time work: 0:00:00.169000
UPD 4:
Источник: Stack Overflow на русском