Eu tenho uma linha do seguinte código (não culpe as convenções de nomenclatura, elas não são minhas):
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()
Não gosto da aparência (não muito legível), mas não tenho nenhuma idéia melhor para limitar as linhas a 79 caracteres nessa situação. Existe uma maneira melhor de quebrá-lo (de preferência sem barras invertidas)?
python
coding-style
pep8
Juliusz Gonera
fonte
fonte
foo.set_default('bar', {}).set_default('spam', {}).set_default('eggs', {})['lol'] = 'yeah'
Este é um caso em que um caractere de continuação de linha é preferido para abrir parênteses. A necessidade desse estilo se torna mais óbvia à medida que os nomes dos métodos aumentam e os métodos começam a receber argumentos:
O PEP 8 pretende ser interpretado com uma medida de bom senso e de olho tanto na prática quanto na beleza. Felizmente, viole qualquer diretriz do PEP 8 que resulte em código feio ou difícil de ler.
Dito isto, se você frequentemente se diverte do PEP 8, pode ser um sinal de que existem problemas de legibilidade que transcendem sua escolha de espaço em branco :-)
fonte
.filter
chamadas é que, se você mudarsubkeyword
parasub_keyword
, agora precisará corrigir o recuo de cada linha apenas porque alterou o nome da variável. Não é bom quando o estilo realmente dificulta a manutenção ...Minha escolha pessoal seria:
fonte
Apenas armazene o resultado / objeto intermediário e invoque o próximo método nele, por exemplo
fonte
team_members = soup.find(class_='section team').find_all('ul').find_all('li')
, o valor de retorno de cada.find(...)
chamada ainda não se encaixa no significadoteam_members
.section = soup.find(class_='section team')
eteam_members = section.find_all('ul').find_all('li')
.De acordo com a referência da linguagem Python
Você pode usar uma barra invertida.
Ou simplesmente quebre. Se um colchete não estiver emparelhado, o python não tratará isso como uma linha. E nessas circunstâncias, o recuo das linhas a seguir não importa.
fonte
É uma solução um pouco diferente da fornecida por outras pessoas, mas uma das minhas favoritas, pois às vezes leva a uma metaprogramação bacana.
Essa é uma boa técnica para criar pesquisas. Percorra uma lista de condicionais para extrair do seu formulário de consulta complexo (ou deduções baseadas em strings sobre o que o usuário está procurando) e depois exploda o dicionário no filtro.
fonte
Você parece usar SQLAlchemy, se for verdade, o
sqlalchemy.orm.query.Query.filter_by()
método usa vários argumentos de palavras-chave, para que você possa escrever como:Mas seria melhor:
fonte
Eu gosto de recuar os argumentos em dois blocos e a declaração em um bloco, como estes:
fonte