demas
Окт. 17, 2008 08:40:46
vigorouz
demas
Ух ты… Спасибо. Красиво.
Ну не то чтоб красиво… просто прикольно :-) А самый красивый вариант предложил lorien
Может быть, но для меня он не понятен.
return Product(*(self.treestore.get_value(iter, x) for x in xrange(5)))
Что такое ‘*’ в данном случае?
ZAN
Окт. 17, 2008 12:19:32
Это значит запаковать аргументы функции в список при получении в теле функции:
>>> def fun(*args):
... '''do something'''
Или распаковать на отдельные аргументы при вызове:
>>> def fun(x, y, z):
... print x, y, z
>>> myList = [1,2,3]
>>> fun(*myList)
1 2 3
Decoy
Ноя. 30, 2008 23:18:40
Здравствуйте!
Согласно
PEP 8 для переменных, функций и методов следует использовать имена в стиле
foo_bar, а для классов —
FooBar. При объявлении и создании обектов их следует именовать в том же стиле?
class App:
...
if __name__ == "__main__":
Main = App ()
...
Верно?
> для переменных
Поясню. Main это переменная. Вообще ты можешь использовть другие нотации, даже свои, никто не заставляет тебя пользоваться идеями одного/другого человека.
Тут вот еще о чем стоит подумать, Main в данном случае вполне может выглядеть классом. Т.е. быть вызываемым, если, скажем, App содержит метод __call__, тогда чем хуже Main того же App, по основному признаку - класс. Имена все же стоит по назначению, а не по происхождению давать.
Но вопрос сложный и интересный, я несколько раз менял свою ориентацию по именованию, даже в масштабах одного проекта.
..bw
ZZZ
Дек. 1, 2008 00:53:15
Думаю, что все рано или поздно, через это проходят.
В данный момент я стараюсь следовать pep8 везде, где нет PyQt. А с PyQt перестраиваюсь на его стиль.
bw
Вообще ты можешь использовть другие нотации, даже свои, никто не заставляет тебя пользоваться идеями одного/другого человека.
ИМХО эти вещи лучше стандартизировать, иначе код теряет читаемость. Да и перестраиваться, чтобы прочитать чужой, правильно оформленный, код бывает тяжело.
Кстати, в минус питону можно отнести неследоватие своему же pep8. Вот например у словаря есть методы has_key и setdefault… Нехорошо блин! Надеюсь, что в тройке это исправят.
Decoy
Дек. 1, 2008 00:58:51
Думаю, остановлюсь на варианте main = App ()… Все-таки, по первичным половым признакам, main - есть переменная. :)
Согласен с ZZZ в вопросе стандартизирования. Кстати, это одна из очевидных архитектурных прелестей языка, который априори требует некоторой унификации. ;) PEP - это очень правильно, IMHO! 8)
Decoy
Дек. 1, 2008 01:01:37
ZZZ, да в третьей версии вроде серьезный список изменений, в т.ч. и переход на UTF-8.
ZZZ
Дек. 1, 2008 01:18:39
Не скольно переход на UTF-8, сколько прозрачное использование unicode там, где содержаться символьные (текстовые) данные. А то сегодня у нас в str хранится и “Хелоу Ворлд!” и образ диска…
Ну и:
PEP 8
Encodings (PEP 263)
Code in the core Python distribution should aways use the ASCII or
Latin-1 encoding (a.k.a. ISO-8859-1). For Python 3.0 and beyond,
UTF-8 is preferred over Latin-1, see PEP 3120.
Андрей Светлов
Дек. 1, 2008 01:41:01
В торойке - не исправят. Много полезных изменений, но стандартизация правил написания - не в их числе.
Как-то читал книжку Александреску и Саттера - это мастера программирования на С++.
Во введении был кусочек, посвященный правилам форматирования. Вкратце: они могут быть любыми, лишь бы в рамках одного namespace (читай модуля или библиотеки) соблюдались. И еще понравилась фраза: “Если бы программисты вместо бесполезных споров о code convesions работали бы над самим кодом - программы были бы лучше, красивее, быстрее”.
Как-то так.
ZZZ
Дек. 1, 2008 02:10:03
Ууу… В Си это вообще страшно! Там народ уже годами спорит о том, как правильно фигурные скобки ставить…
В питоне этот вопрос особо не стоит, потому что есть pep-8 и всегда можно сказать, что наш пожизненный и великодушний диктатор сказал, что правильно так. А его ошибки – он тоже всего лишь человек.