Ответ 1
Как правило, считается, что хорошая практика в Python состоит в том, чтобы иметь функции, которые в первую очередь влияют на существующие объекты, не возвращаются сами. Например, sorted(yourlist)
возвращает отсортированный список, но yourlist.sort()
сортирует список на месте и ничего не возвращает.
Выполнение нескольких операций с побочными эффектами (в отличие от функций без побочных эффектов, когда фокус находится на возвращаемом значении) на одной линии не является действительно хорошей практикой. Код будет более компактным по количеству строк, но его будет труднее читать, потому что важные побочные эффекты могут быть похоронены в середине цепочки. Если вы хотите использовать цепочку методов, используйте функции без побочных эффектов в начале цепочки, а затем добавьте одну функцию с таким побочным эффектом, как .save()
в конце.
Другими словами, в цепочке методов начало цепочки - это вход, середина цепочки преобразует вход (перемещаясь по дереву, сортируя вход, изменяя случай строки и т.д.), и конец цепочки - это функциональная часть, которая работает с побочными эффектами. Если вы похороните методы с побочными эффектами в середине цепи, тогда будет непонятно, что на самом деле делает ваша цепочка методов.