Comments 3
Насчет f-строк, а какие альернативы? Собирать строку через print('hello ' + fname + ' ' + sname)
? Ну так себе. Через print('hello {} {}'.format(fname, sname))
? Тоже, имхо, неудобное сишное легаси (при всем моем уважении к си, в котором вроде сейчас тоже уже удобнее есть, хотя тут могу ошибаться).
Конечно, тернанрник с тернарником внутрь ф-строки пихать это кощунство, как и какие-нибудь лямбды разрешать, но в целом делать условный print(f'hello {get_db_fname()} {get_db_sname()}')
(с учетом что имена мы не используем где-либо еще и сохранять их в переменные не нужно совсем), так вполне норм подход я считаю.
Мы скорее о том, что засовывать в f-строки сложные выражения - плохая идея. На мой вкус f'{"\n".join(some_list)}' читается трудновато и я не хотел такое бы в коде видеть
Ну, на мой вкус, за f'{"\n".join(some_list)}'
нужно просто нещадно бить :)
А так да, сложные конструкции - выкидывать наружу, типа:
to_print_list = "\n".join(some_list)
print(f'some strings: \n{to_print_list}Read them!')
И то, вообще такой подход тоже неверный и ф-строки вообще тут не нужны.
И да, я согласен, что "сложные конструкции" не нужны, но что считать этими самыми "сложными"? Функция с пятью+ переменными? А почему не с четырьмя? А если там будет одна переменная, но длинный словарь, который генерится внутри через for?
В общем, на самом деле, решить эту проблему так, чтобы прям все-все были довольны - сложно на уровне PEP. Намного проще ввести codestyle и уже там описать, например "если внутри скобок в ф-строке более 20 символов - вводить переменную и выносить туда".
Главное из мира Python за январь 2023