Escrever longas cadeias de texto em várias linhas em Python

O negócio

Se utilizar um verificador de código conforme PEP8, tal como o floco8 em Python, receberá o seguinte erro quando uma linha exceder 80 caracteres.
E501 line too long

Mostrar-vos-ei como quebrar uma longa sequência de mais de 80 caracteres, como um URL, em múltiplas linhas de código.

  • Ignorar quebras de linha com contrabarragens (\)
  • As quebras de linha podem ser livremente fechadas entre parênteses

Além disso, o módulo de embrulho de texto é útil se desejar produzir e exibir cadeias longas, embrulhando-as ou abreviando-as.

Se o número de caracteres numa linha for maior numa cadeia de métodos do que numa cadeia longa, a linha também pode ser quebrada no código.

Ignorar quebras de linha com contrabarragens (\)

Em Python, a barra invertida (\) é um carácter de continuação, e quando colocada no fim de uma linha, ignora as quebras de linha subsequentes e assume que a linha continua.

n = 1 + 2 \
    + 3

print(n)
# 6

Além disso, quando múltiplas literais de cordas são escritas em sucessão, elas são concatenadas para formar uma única corda, como se mostra abaixo.

s = 'aaa' 'bbb'

print(s)
# aaabbb

Combinando os dois, uma cadeia longa pode ser escrita em múltiplas linhas de código, como se mostra abaixo.

s = 'https://ja.wikipedia.org/wiki/'\
    '%E3%83%97%E3%83%AD%E3%82%B0%E3%83'\
    '%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E'

print(s)
# https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

Note-se que apenas os literais de cordas (incluídos em ' ou “”) podem ser concatenados, e as variáveis contendo cordas resultarão num erro.

s_var = 'xxx'

# s = 'aaa' s_var 'bbb'
# SyntaxError: invalid syntax

Para concatenar variáveis umas às outras ou variáveis para encadear literais, usar o operador +.

s = 'aaa' + s_var + 'bbb'

print(s)
# aaaxxxbbb

Mesmo quando separado por uma contrabarra (\), o operador + é obrigado a concatenar variáveis.

s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'\
    + s_var\
    + 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

As quebras de linha podem ser livremente fechadas entre parênteses

Em Python, pode quebrar livremente as linhas dentro dos seguintes parênteses. Pode utilizar esta regra para incluir longas linhas de texto entre parênteses.

  • ()
  • {}
  • []

Note-se que alguns parênteses são utilizados de outras formas, como se mostra a seguir, pelo que utilizar parênteses () entre parênteses rectos () para tal utilização.

  • {}Conjunto: Conjunto
  • []: Lista

Mais uma vez, utilizando o facto de várias cordas poderem ser concatenadas entre si para formar uma única corda, podemos escrever o seguinte

s = ('https://ja.wikipedia.org/wiki/'
     '%E3%83%97%E3%83%AD%E3%82%B0%E3%83'
     '%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E')

print(s)
# https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

Tal como no exemplo com a barra invertida, o operador + é necessário quando as variáveis são incluídas.

s = ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
     + s_var
     + 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb')

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb