Jestem częstym użytkownikiem odwróconych ukośników w sposób podobny do tego, który zzzeek wskazał w swojej odpowiedzi. PEP8 to tylko wskazówka, nie przestawaj spać nad tym, gdy go naruszysz!
Jednak, ja też często używają typ formatowania poniżej, gdzie mam skradzione zzzeek za pierwszy przykład, łagodnie manipulowane go i sformatowany:
q = Session.query(
Subkeyword.subkeyword_id,
Subkeyword.subkeyword_word,
)
q = q.filter_by(subkeyword_company_id=self.e_company_id) # first filter
q = q.filter_by(subkeyword_word=subkeyword_word) # 2nd filter
q = q.filter_by(subkeyword_active=True)
if filter_by_foo:
q = q.filter(Subkeyword.foo == True)
# Run the query (I usually wrap in a try block)...
subkeyword = q.one()
Powtarzające przeniesieniu na q wydaje rodzaju nieprzyjemnych najpierw , ale mam już nad tym. Wpływ na wydajność jest praktycznie zerowy. Dużą zaletą w ten sposób jest to, że możesz mieszać zarówno komentarze końcowe, jak i komentarze, aby udokumentować swoje zapytania (tak jak zrobiłem to z bezużytecznymi dodatkami powyżej). Łańcuch linii z tylnymi ukośnikami ogranicza cię tutaj.
ten sposób formatowania szczególnie czyste przy formułowaniu masowe zapytań z ton modyfikacje logiki wyzwalania, osadzone skalarnych wybiera itp
Jako inny przykład, mieć stosunkowo duże (> 150 linii) CTE zapytania I generuję w SQLAlchemy, który ma dużo mieszanej logiki, aliasingu i etykietowania (co jest istotne dla czytelności wygenerowanego zapytania), które miesza obie metody.Poważnie zmniejszona (i zniekształcone) wersja nim zacznie coś jak poniżej:
cte_init = session.\
query(
child1.foo.label("child1_foo"),
sa.literal(1).label("indent"), # can comment on non-slashed lines
child2.bar.label("child2bar"),
#comments between non-slashed lines ok, too
sa.func.MAX(toplevel.baz).label("max_baz"),
).\
select_from(top_level).\
join(child1,
child1.id == toplevel.fk_child1_id).\
join(child2.
child2.id == toplevel.fk_child2.id).\
filter(top_level.name == "bogus").\
cte(name = "cte", recursive = True)
if(use_filter_x):
cte_init = cte_init.filter_by(x = "whatever")
# etc (no, the above doesn't make any sense)...
W ogóle, jeśli upewnij się, aby prowadzić swoje linie off z nowych operacji (jak wielu systemów formatowania wspólny SQL zrobić), to pozostanie całkiem czytelny. Nie bój się też nowych wierszy w nawiasach.
ładny backslashe Wykorzystanie w pocoo zespołu przewodniku redakcyjnym http://www.pocoo.org/internal/styleguide/ – estin