Я бы использовал s.endswith("ing")
в if
, что также немного быстрее, потому что оно не создает новую строку для сравнения.
И во-вторых, я бы использовал строки документации для комментариев,Таким образом, вы можете увидеть свое описание, когда вы делаете help(yourmodule)
или когда вы используете какой-либо инструмент autodoc, например Sphinx , для создания справочника, описывающего ваш API.Пример:
def verbings(s):
"""Given a string, if its length is at least 3, add 'ing' to its end.
Unless it already ends in 'ing', in which case add 'ly' instead.
If the string length is less than 3, leave it unchanged."""
# rest of the function
В-третьих, изменение входных параметров часто считается плохой практикой.Вы можете сделать это для параметров dict или list, которые также могут выступать в качестве выходных параметров.Но строки являются только входными параметрами (поэтому у вас есть возврат).Конечно, источник, который вы написали, действителен, но часто сбивает с толку.Другие языки часто используют ключевое слово final
или const
, чтобы избежать этой путаницы, но Python этого не делает.Поэтому я бы порекомендовал вам использовать либо вторую переменную result = s + "ing"
и затем сделать return result
, либо написать return s + "ing"
.
В остальном все отлично.Конечно, есть некоторые конструкции в Python, которые короче писать (вы узнаете их со временем), но они часто не так удобочитаемы.Поэтому я бы остался с вашим решением.