в ф-строке?
ну просто с обыным принтом так работает, тут ожидаешь такую же логику
Схуяли? Какая связь между распаковкой аргументов функции и поведением принта и подстановкой в строку?
>>> test = [1, 2, 3] >>> f'abc {", ".join(map(str, test))}' 'abc 1, 2, 3'
а в 3.12 можно было бы f'abc {', '.join(map(str, test))}' (внимание на кавычки)
щаща, поставлю 3.12, покажу как надо
>>> test = [1, 2, 3] >>> f'abc {f'{test}'.strip('][')}' 'abc 1, 2, 3'
Распаковка работает в конкретных ситуациях: при передаче аргументов, создании туплов и списков в литералах, и т. п. Тут нет ни одного из случаев.
А вот так уже получится тупл: In [17]: test = [1,2,3] ...: print(f'лист {*test,}') лист (1, 2, 3)
то есть print(*test) работает из за того что это как передача в функцию идет, а в f строках это не считается за передачу?
print(*test) аналогичен print(test[0], test[1], test[2]) если в test 3 элемента
В f-строке ожидается выражение. *test — не выражение.
Обсуждают сегодня