Уведомления

Группа в Telegram: @pythonsu

#1 Март 29, 2021 21:14:26

Nedobolsky
Зарегистрирован: 2021-01-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

str.format

 print('{}-{}-{}'.format(*[1, 2, 3]))
 print('{one}-{two}-{three}'.format(**{'two': 2, 'one': 1, 'three': 3}))
Вопрос: Объясните зачем в данных примерах ставят символ * ? Во втором примере, их вообще два!

Офлайн

#2 Март 29, 2021 21:43:11

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

str.format

https://tproger.ru/translations/asterisks-in-python-what-they-are-and-how-to-use-them/



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#3 Март 29, 2021 21:56:08

Nedobolsky
Зарегистрирован: 2021-01-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

str.format

Большое спасибо!

Офлайн

#4 Март 30, 2021 11:55:46

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

str.format

> print('{}-{}-{}'.format(*))

Люди! Не пользуйтесь форматом!

 >>> print('%i-%i-%i'%(1, 2, 3))
1-2-3



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Март 30, 2021 13:39:03

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

str.format

Rodegast
Люди! Не пользуйтесь форматом!
обоснуй



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#6 Март 30, 2021 14:46:14

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

str.format

“Читаемость имеет значение”



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Март 30, 2021 15:05:21

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

str.format

Rodegast
“Читаемость имеет значение”
ну ХЗ, ИМХО особой разницы нет. С точки зрения читаемости f-строки более читабельны чем format или %-форматирование. Но им(f-строкам) нельзя скормить списко/словарь “как есть”.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 30, 2021 15:05:45)

Офлайн

#8 Март 30, 2021 16:58:42

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

str.format

> особой разницы нет

Разница большая, особенно когда пытаются конкатенировать строки при помощи этого формата.

> С точки зрения читаемости f-строки более читабельны

А вот для любителей f-строк в аду приготовлено специальное место.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#9 Март 30, 2021 20:52:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

str.format

Rodegast
Разница большая, особенно когда пытаются конкатенировать строки при помощи этого формата.
Разнотипные аргументы может использовать полиморфно
  
>>> fmt = '{} {}'
>>> 
>>> [fmt.format(*i) for i in ((1, 2), ('a', 'b'), (1+2j, None))]
['1 2', 'a b', '(1+2j) None']
>>> 
>>> 
>>> fmt = '{:10}'
>>> 
>>> list(map(fmt.format, (1, 'a', 1+2j)))
['         1', 'a         ', '    (1+2j)']
>>>
Причём можно и явно указывать, какие типы ожидаются, если, наоборот, нужно строго пропускать.

Также именованные аргументы играют тоже большую роль для ясности кода
  
>>> fmt = 'User: {user}\nAddress: {address}\nPhone: {phone}'
>>> 
>>> print('\n\n'.join(fmt.format(user=u, address=a, phone=p)
...           for u, a, p in (('John', 'Street 123', 123),
...                           ('Mary', 'Street 456', 456),
...                           ('Bob', 'Street 789', '555-55-55'),)))
User: John
Address: Street 123
Phone: 123
 
User: Mary
Address: Street 456
Phone: 456
 
User: Bob
Address: Street 789
Phone: 555-55-55
>>>
Часто бывает формат многострочный, а аргументов с десяток. Сообщение бота какое-нибудь с кучей подстановок.



Отредактировано py.user.next (Март 30, 2021 21:00:50)

Офлайн

#10 Март 30, 2021 21:41:46

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

str.format

> Также именованные аргументы играют тоже большую роль для ясности кода

Кто тебе запрещает использовать имена в месте с %?

> Часто бывает формат многострочный, а аргументов с десяток. Сообщение бота какое-нибудь с кучей подстановок.

Вот когда будет достаточно сложное форматирование, тогда и пользуйся форматом. Но в других ситуациях он не уместен. За такое прямо убить хочется…

 "aaaaa {}".format("bbb")



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version