Pull to refresh

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 символов - вводить переменную и выносить туда".

Sign up to leave a comment.

Articles