Mam wiersz następującego kodu (nie obwiniaj konwencji nazewnictwa, nie są moje):
subkeyword = Session.query(
Subkeyword.subkeyword_id, Subkeyword.subkeyword_word
).filter_by(
subkeyword_company_id=self.e_company_id
).filter_by(
subkeyword_word=subkeyword_word
).filter_by(
subkeyword_active=True
).one()
Nie podoba mi się to, jak to wygląda (niezbyt czytelne), ale nie mam lepszego pomysłu na ograniczenie linii do 79 znaków w tej sytuacji. Czy jest lepszy sposób na jej złamanie (najlepiej bez ukośników)?
python
coding-style
pep8
Juliusz Gonera
źródło
źródło
foo.set_default('bar', {}).set_default('spam', {}).set_default('eggs', {})['lol'] = 'yeah'
Jest to przypadek, w którym znak kontynuacji wiersza jest preferowany zamiast otwierania nawiasów. Potrzeba tego stylu staje się bardziej oczywista, gdy nazwy metod stają się dłuższe, a metody zaczynają przyjmować argumenty:
PEP 8 ma być interpretowany z rozsądkiem i dbałością o to, co praktyczne i piękne. Na szczęście naruszysz jakiekolwiek wytyczne PEP 8, które skutkują brzydkim lub trudnym do odczytania kodem.
Biorąc to pod uwagę, jeśli często znajdujesz się w sprzeczności z PEP 8, może to oznaczać, że istnieją problemy z czytelnością, które wykraczają poza twój wybór białych znaków :-)
źródło
.filter
wywołań jest to, że jeśli zmieniszsubkeyword
nasub_keyword
, musisz teraz naprawić wcięcie każdego wiersza tylko dlatego, że zmieniłeś nazwę zmiennej.Mój osobisty wybór byłby następujący:
źródło
Wystarczy zapisać pośredni wynik / obiekt i wywołać na nim następną metodę, np
źródło
team_members = soup.find(class_='section team').find_all('ul').find_all('li')
zwracana wartość z każdego.find(...)
wywołania nie mateam_members
jeszcze znaczenia .section = soup.find(class_='section team')
iteam_members = section.find_all('ul').find_all('li')
.Zgodnie z odniesieniem do języka Python
Możesz użyć odwrotnego ukośnika.
Lub po prostu go zniszcz. Jeśli nawias nie jest sparowany, Python nie potraktuje tego jako linii. W takich okolicznościach wcięcie kolejnych wierszy nie ma znaczenia.
źródło
To trochę inne rozwiązanie niż oferowane przez innych, ale moje ulubione, ponieważ czasami prowadzi do sprytnego metaprogramowania.
To dobra technika tworzenia wyszukiwań. Przejrzyj listę warunków do wyszukania ze złożonego formularza zapytania (lub oparte na ciągach dedukcje dotyczące tego, czego szuka użytkownik), a następnie po prostu rozbij słownik do filtra.
źródło
Wydaje się, że używasz SQLAlchemy, jeśli to prawda,
sqlalchemy.orm.query.Query.filter_by()
metoda przyjmuje wiele argumentów słów kluczowych, więc możesz napisać tak:Ale byłoby lepiej:
źródło
Lubię wciskać argumenty dwoma blokami, a oświadczenie jednym blokiem, na przykład:
źródło