You are viewing aka_rider

April 24th, 2010


Previous Entry Add to Memories Share Next Entry
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

(12 comments | Leave a comment)

Comments:


[User Picture]
From:wizzard0
Date:April 24th, 2010 04:57 pm (UTC)
(Link)
Чот мне не кажется зто хорошим coding style :)

Хотя да, магия такая магия...
[User Picture]
From:aka_rider
Date:April 24th, 2010 05:01 pm (UTC)
(Link)
Ну, в функциях, предназначенных исключительно для форматирования, объем кода в разы сокращает. Тем более, оно на недостающие переменные ругается, лишние игнорирует, что еще нужно для счастья рядовому быдлокодеру?
[User Picture]
From:wizzard0
Date:April 24th, 2010 06:14 pm (UTC)
(Link)
Согласен, в общем-то)
[User Picture]
From:cd_riper
Date:April 24th, 2010 05:20 pm (UTC)
(Link)
я 2.x синтаксис для форматирования даже толком не знаю.

в 3.x читы не нужны
"{who} {one} {two}".format(who = 'world', one = 1, two = 2)
[User Picture]
From:aka_rider
Date:April 24th, 2010 05:32 pm (UTC)
(Link)
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')
[User Picture]
From:cd_riper
Date:April 24th, 2010 05:41 pm (UTC)
(Link)
> 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() )
 
[User Picture]
From:aka_rider
Date:April 24th, 2010 05:51 pm (UTC)
(Link)
Ну это уже дело вкуса, конечно :)
Но у меня такой код не пройдет: из 9-ти переменных у меня 3 вычисляются в цикле, а 5 в нескольких строчках кода. Как минимум: if (что-то) a = "что-то" + a else a = "что-то другое" + a.
Потом все переменные приходится еще раз в формате использовать.
[User Picture]
From:cd_riper
Date:April 24th, 2010 06:28 pm (UTC)
(Link)
да, вообще прикольный трюк. возьму на вооружение.
только вот format на незаюзанные значение наверняка ругнется.
From:sheplyvedo
Date:June 2nd, 2011 01:05 am (UTC)

Благодарю за блог

(Link)
Действительно интересно!
[User Picture]
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]
From:aka_rider
Date:June 30th, 2011 10:16 pm (UTC)

Re: Интересно почитать

(Link)
Всегда рад :)
D.Rider on everything - Пополняйте python cheatsheet

> Recent Entries
> Archive
> Friends
> Profile


> Go to Top
LiveJournal.com