Olá, Henrique! Como vai?
Entendo que algumas partes do código podem parecer um pouco confusas no início, mas vou tentar esclarecer suas dúvidas.
A razão pela qual utilizamos as chaves {} dentro do print é porque estamos usando o que chamamos de f-string, que é uma maneira de formatar strings em Python. A sintaxe básica de uma f-string é f'{variável}'. O que está dentro das chaves {} é uma expressão Python que é avaliada e sua saída é formatada como uma string.
No seu caso, 'Nome do restaurante'.ljust(22), 'Categoria'.ljust(20) e 'Funcionamento' são as expressões que estão sendo avaliadas. O método ljust() é usado para alinhar a string à esquerda preenchendo com espaços à direita até atingir o tamanho total especificado como parâmetro (22 para 'Nome do restaurante' e 20 para 'Categoria'). Isso é feito para melhorar a visualização dos dados na tela.
A razão pela qual usamos .format no início é para formatar a string. O método .format() permite que você insira valores em uma string em locais marcados por chaves {}. Neste caso, como estamos usando f-strings, o .format não é necessário.
Então, resumindo, a linha print(f'{'Nome do restaurante'.ljust(22)} | {'Categoria'.ljust(20)} | {'Funcionamento'}') está imprimindo as palavras 'Nome do restaurante', 'Categoria' e 'Funcionamento' com um alinhamento à esquerda e um número específico de espaços à direita para melhorar a visualização dos dados.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.