|
April 24th, 2010
06:54 pm - Пополняйте python cheatsheet
Copy Source | Copy HTML def format_some(): template = \ """ Hello, %(who)s! This is template example. Numbers: %(one)d, %(two)d """ who = 'World' one = 1 two = 2 This_variable_willnt_shown = 'dummy' return template % locals() print (format_some())
UP*
cd_riper привел пример форматирования с помощью функции format, код немного красивее получается (не надо указывать типы s / d и пр.).
Copy Source | Copy HTML def format_some(): template = \ """ Hello, {who}! This is template example. Numbers: {one}, {two} """ who = 'World' one = 1 two = 2 This_variable_willnt_shown = 'dummy' return template.format(**locals()) print (format_some())
Current Mood: I did it Current Music: Jack Pearson
|
Чот мне не кажется зто хорошим coding style :)
Хотя да, магия такая магия... Ну, в функциях, предназначенных исключительно для форматирования, объем кода в разы сокращает. Тем более, оно на недостающие переменные ругается, лишние игнорирует, что еще нужно для счастья рядовому быдлокодеру? я 2.x синтаксис для форматирования даже толком не знаю.
в 3.x читы не нужны "{who} {one} {two}".format(who = 'world', one = 1, two = 2)
namedtuple есть в 2.6 и format тоже, так что можно переписать и так: Copy Source | Copy HTML def format_some(): who = 'world' one = 1 two = 2 print "{who} {one} {two}".format(**locals()) format_some()
Тут фишка в том, что если переменных форматирования много, их неудобно передавать ни в dict ни в tuple, а особенно если выходит: (world='world', one='one') > namedtuple это не namedtuple, это keyword arguments. > а особенно если выходит: (world='world', one='one') тоже ничего страшного, пишешь по одному аргументу на строчку, отлично читается Copy Source | Copy HTML def __str__(self): return "{offs}: Addr = {addr} Count = {count} Flags = {flags} {flagsStr}".format( offs = IntToHex(self.m_offs), addr = IntToHex(self.m_addr), count = IntToSize(self.m_count, -10), flags = IntToHex(self.m_flags, 2), flagsStr = self.__BoolFlags() )
Ну это уже дело вкуса, конечно :) Но у меня такой код не пройдет: из 9-ти переменных у меня 3 вычисляются в цикле, а 5 в нескольких строчках кода. Как минимум: if (что-то) a = "что-то" + a else a = "что-то другое" + a. Потом все переменные приходится еще раз в формате использовать.
да, вообще прикольный трюк. возьму на вооружение. только вот format на незаюзанные значение наверняка ругнется. | From: | sheplyvedo |
| Date: | June 2nd, 2011 01:05 am (UTC) |
|---|
| | Благодарю за блог | (Link) |
|
Действительно интересно!  ![[User Picture]](http://l-userpic.livejournal.com/85707946/15247884) | | From: | aka_rider |
| Date: | June 2nd, 2011 08:42 am (UTC) |
|---|
| | Re: Благодарю за блог | (Link) |
|
Приятно :) | From: | ardelyko |
| Date: | June 30th, 2011 09:44 pm (UTC) |
|---|
| | Интересно почитать | (Link) |
|
Прикольно!  ![[User Picture]](http://l-userpic.livejournal.com/85707946/15247884) | | From: | aka_rider |
| Date: | June 30th, 2011 10:16 pm (UTC) |
|---|
| | Re: Интересно почитать | (Link) |
|
Всегда рад :) |
|
|