Dalla lettura PEP-8, ho capito che si dovrebbe mettere la parentesi di chiusura sulla stessa linea come ultimo argomento in chiamate di funzione:metodo Incatenato chiama stile di rientro in Python
ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False)
Probabilmente, lunghe espressioni sono meglio evitare per niente. Ma se è indesiderabile, , come andresti su più chiamate con metodi concatenati? Il paren di chiusura dovrebbe essere su una nuova linea?
ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False
).values_list('value', flat=True)
E i metodi senza argomenti? Come scriverli su più righe senza fare riferimento ai valori di ritorno intermedi?
ShortName.objects.distinct(
).filter().values() # looks ugly
Aggiornamento: C'è una domanda di duplicato How to break a line of chained methods in Python?. Lo accepted answer suggerisce uno stile familiare di jQuery di iniziare ogni nuova riga con un punto. L'autore non fornisce alcuna motivazione o riferimento autorevole, quindi mi piacerebbe avere una conferma su tale stile o un'alternativa.
Mi piace questo approccio. Ha anche il grande vantaggio di poter spostare le linee senza preoccuparsi della punteggiatura (tranne la prima e l'ultima riga). Uso principalmente le chiamate concatenate quando mi occupo di query SQLAlchemy complesse ed è bello poterle riordinare facilmente. –
Sembra davvero meglio, e hai anche indentato il commento. Grazie! – katspaugh
Raymond, qual è la ragione per cui Python non consente la nuova riga prima e dopo un punto? Ciò rende più difficile la formattazione più difficile ... –