Executando verificação de segurança...
20

[Python] Dicas úteis de f-string com Python 3.12

Como imprimir strings

Segue algumas dicas muito legais que eu vi em um vídeo no youtube de funcionalidades de F-strings
no python 3.12

1ª Dica - Formatação de números para legibilidade

# Número sem formatação
numero: int = 1_000_000_000
# não salva formatação
print(numero) # output: 1000000000
# Número sem formatação
numero: int = 10000000

# salvo formatação
print(f'{numero:_}') # output: 1_000_000_000
print(f'{numero:.}') # output: 1.000.000.000

2ª Dica - Usando espaços para alinhar e formatar

palavra: str = 'Carlos'

# Espaço pela esquerda
print(f'{palavra:>10}:') # output:    Carlos:

# Espaço pela direita
print(f'{palavra:<10}:') # output:Carlos    :

# Espaço pelo centro
print(f'{palavra:^10}:') # output:  Carlos  :
palavra: str = 'Carlos'

# Espaço pela esquerda
print(f'{palavra:->10}:') # output:----Carlos:

# Espaço pela direita
print(f'{palavra:-<10}:') # output:Carlos----:
# Espaço pelo centro 

print(f'{palavra:-^10}:') # output:--Carlos--:

3ª Dica - Formatando datetime

from datetime import datetime
agora: datetime = datetime.now()

# Formatação usando dia, mês, ano, hora, minuto e segundo
print(f'{agora:%d.%m.%y (%H:%M:%S)}') # output: 22.03.2024 (17:45:15)

# Formatação usando versão local do sistema operacional
print(f'{agora:%c}')

4ª Dica - Formatando float

valor_do_imposto: float = 1282324.9

# Formatando o valor float
print(f'{valor_do_imposto}:,.2f') # output: 1,282,324.90

5ª Dica - Formatando com os valores da variável

valor_1: int = 51
valor_2: int = 32

# Formatando o valor como uma soma
print(f'{a + b = }') # a + b = 83

Conclusão

Gostei muito da 2ª e 3ª dica que são bem úteis para debug rápido e impressão de variáveis em testes

Carregando publicação patrocinada...
4
3

Muito bom! Complementando, todas estas opções de formatação podem ser encontradas na documentação (é bem ampla, com várias outras opções, sugiro a leitura).

Um detalhe interessante é que os parâmetros de formatação (tamanho, alinhamento, etc) podem ser dinâmicos:

def fstring(texto, fill_char, align, size):
    print(f'{texto:{fill_char}{align}{size}}')

fstring('olá', '+', '<', 10) # olá+++++++
fstring('olá', '.', '^', 15) # ......olá......

E não se resume a variáveis, eu posso colocar qualquer expressão, desde que resulte em um caractere válido:

# escolhe as opções aleatoriamente
from random import choice
aligns = ['<', '>', '^']
fill_chars = ['-', '.', '+', '_', '*']
sizes = [10, 15, 20]

# cada vez que rodar, vai escolher opções diferentes
print(f'{"olá":{choice(fill_chars)}{choice(aligns)}{choice(sizes)}}')

Repare também que a string a ser formatada não precisa estar em uma variável, eu posso colocá-la diretamente ali. A única exigência é que se use aspas diferentes da f-string.

Vale lembrar também que é possível ter f-strings aninhadas:

print(f'{", ".join(f"{n:03}" for n in range(10)):_>60}')
# ____________000, 001, 002, 003, 004, 005, 006, 007, 008, 009

O importante é que a f-string interna use aspas diferentes da externa.

3

Hell yeah, isso foi útil pra caramba, vlw ai pelas dicas e pela recomendação do canal, esse ai eu não conhecia. Eu curti as dicas e dicas, dá pra combinar algumas delas pra formatar strings de forma mais complexa ainda -- só a quinta q eu achei meio inútil/estranha.

A da data, meu amigo, acho q tu salvou uns bons minutos do tempo q passo scriptando em paito. Formatar data é um negoço que eu nunca lembro em Python e saber dessa feat de formatar um objeto de data é bom d+. ❤️

Pra não passar batido, vo deixar uma dicazinha que aprendi esses dias. A PEP 8 recomenda que as linhas de um script tenham no máximo 79 caracteres, mas as vezes eu gosto de printar algumas informações pra acompanhar a executação do programa e tals, mas não é raro que esses prints fiquem longos. Ai tem uma solução pra quebrar a linha desses prints sem ficar usando o \ charater:

print("[LOGG]: Imagina que isso é uma linha "
      "beeeeeeeem longa, e eu preciso "
      "encurtar ela pra caber no limite de "
      "79 caracteres")
      
print("[INFO]: Isso " "também " "funciona!")

Tamém é extremamente útil se tu escreve bastante SQL na mão com o python!

Na definição de variáveis/constantes isso não rola, ai nesses casos vai ter que usar o \ mesmo.

O único problema é que não da pra fazer isso em variaveis, ai vai ter quer usar o

1

Essa dica de que strings em seguinda de outra são concatenadas é muito útil, usei muito para concatenar url para o request. obrigado pelo comentário fico feliz que eu tenha ajudado!