Como você formata uma linha longa como essa? Eu gostaria de ter no máximo 80 caracteres de largura:
logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes['url']], video.title))
Essa é a minha melhor opção?
url = "Skipping {0} because its thumbnail was already in our system as {1}."
logger.info(url.format(line[indexes['url']], video.title))
python
formatting
code-formatting
Gattster
fonte
fonte
indexes
: o plural correto deindex
éindices
.Respostas:
Isso é um começo. Não é uma prática ruim definir suas seqüências mais longas fora do código que as usa. É uma maneira de separar dados e comportamento. Sua primeira opção é unir literais de cadeia implicitamente, tornando-os adjacentes um ao outro:
Ou com continuações de final de linha, que são um pouco mais frágeis, pois isso funciona:
Mas isso não acontece:
Veja a diferença? Não? Bem, você não vai quando é o seu código também.
A desvantagem da junção implícita é que ela só funciona com literais de strings, não com strings de variáveis, para que as coisas fiquem um pouco mais peludas quando você refatorar. Além disso, você só pode interpolar a formatação na cadeia combinada como um todo.
Como alternativa, você pode ingressar explicitamente usando o operador de concatenação (
+
):Explícito é melhor do que implícito, como diz o zen do python, mas isso cria três strings em vez de um e usa o dobro de memória: existem as duas que você escreveu, mais uma que são as duas juntas, então você tem que saber quando ignorar o zen. A vantagem é que você pode aplicar a formatação a qualquer uma das substrings separadamente em cada linha ou a todo o lote de fora dos parênteses.
Por fim, você pode usar cadeias de caracteres triplas:
Geralmente, é o meu favorito, embora seu comportamento seja ligeiramente diferente, pois a nova linha e qualquer espaço em branco à esquerda nas linhas subseqüentes aparecerão na sua sequência final. Você pode eliminar a nova linha com uma barra invertida de escape.
Isso tem o mesmo problema que a mesma técnica acima, pois o código correto difere apenas do código incorreto pelo espaço em branco invisível.
Qual é o "melhor" depende da sua situação específica, mas a resposta não é simplesmente estética, mas um comportamento sutilmente diferente.
fonte
'
para conter essa sequência ou escapar das aspas duplas dentro de sua sequência ou usar aspas duplas triplas"""
. O problema com seqüências de caracteres entre aspas contendo aspas é o mesmo, se você usa uma única linha ou várias linhas para definir a sequência literal.+
.Literais consecutivos de sequência são unidos pelo compilador e expressões entre parênteses são consideradas uma única linha de código:
fonte
Pessoalmente, eu não gosto de pendurar blocos abertos, então eu o formataria como:
Em geral, eu não me incomodaria muito em fazer o código se encaixar exatamente dentro de uma linha de 80 colunas. Vale a pena manter o comprimento da linha em níveis razoáveis, mas o limite dos 80 é uma coisa do passado.
fonte
Você pode usar o módulo textwrap para quebrá-lo em várias linhas
A partir da documentação :
fonte
Para quem também está tentando chamar
.format()
uma cadeia longa e não pode usar algumas das técnicas mais populares de quebra de cadeia sem interromper a.format(
chamada subsequente , você pode fazer isso emstr.format("", 1, 2)
vez de"".format(1, 2)
. Isso permite que você quebre a corda com qualquer técnica que desejar. Por exemplo:pode ser
Caso contrário, a única possibilidade é usar continuações de final de linha, das quais pessoalmente não sou fã.
fonte