[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
Dicas bem úteis! Algumas formatações já existiam em versões anteriores. O melhor para saber o que tem de novo em cada versão são os "What's New" oficiais: https://docs.python.org/3/whatsnew/3.11.html https://docs.python.org/3/whatsnew/3.12.html etc. Claro que tem também vários artigos na internet detalhando melhor e com mais exemplos. Achei legal traduzir o vídeo e postar resumido o conteúdo.
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.
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+. :heart:
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