Одной из причин не использовать длинные цепочки является то, что она скрывает сообщения об ошибках отслеживания.Когда в длинной цепочке возникает исключение, в сообщении об ошибке трассировки указывается только строка, в которой произошло исключение, а не какая часть цепочки.
Если вы уверены, что исключение не произойдет, тогда
for word in f.read().lower().split():
dict[word] += 1
может быть предпочтительнее, чем
contents=f.read()
contents=contents.lower()
words=contents.split()
for word in words:
d[word] += 1
, поскольку память используется строкой contents
и списком words
и не освобождается до тех пор, пока не закончится этот блок кода (при условииникакие другие ссылки на те же объекты не делаются).Поэтому, если памяти недостаточно, вы можете рассмотреть вопрос о цепочках.
Если память не является проблемой, особенно если words
или contents
можно будет использовать позже в коде, тогда присваивайте переменнуюссылаться на них, конечно, будет быстрее, поскольку методы read
, lower
и / или split
больше не нужно будет вызывать.