Уведомления

Группа в Telegram: @pythonsu

#1 Июль 14, 2014 00:48:30

likin
От:
Зарегистрирован: 2010-03-15
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Нуждаюсь в codereview.

Использую pyCharm community edition. Помог поправить код к стандартам PEP8.

Спасибо.



Офлайн

#2 Июль 14, 2014 02:54:39

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

Нуждаюсь в codereview.

likin
argparse основана на optparse, то есть не является устаревшей

There are two other modules that fulfill the same task, namely getopt (an equivalent for getopt() from the C language) and the deprecated optparse.



Офлайн

#3 Июль 15, 2014 13:51:36

kise97
Зарегистрирован: 2012-05-31
Сообщения: 83
Репутация: +  4  -
Профиль  

Нуждаюсь в codereview.

# https://github.com/vlikin/sitemap_builder_test/blob/master/sitemap.py#L20
if len(args) == 0:
Это все мои тараканы, но я делаю так
if not len(args):

# https://github.com/vlikin/sitemap_builder_test/blob/master/lib/page.py#L35
if None == parent:
Ну я даже не знаю… как то вообще не так выглядит..
if parent is not None:


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

Да и вообще, попробуйте это оформить все покрасивее в виде пакета, с конфиг файлами и все такое, потому что это всегда удобнее.

Отредактировано kise97 (Июль 15, 2014 13:53:11)

Офлайн

#4 Июль 15, 2014 15:07:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нуждаюсь в codereview.

kise97
if not len(args):
if not args:



Отредактировано FishHook (Июль 15, 2014 15:08:03)

Офлайн

#5 Июль 15, 2014 15:30:01

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Нуждаюсь в codereview.

row_list = []
row = [id(self), level, self.url, id(parent)]
row_list.append(row)
row больше нигде не используется
row_list = [[id(self), level, self.url, id(parent)]]

Офлайн

#6 Июль 15, 2014 16:17:59

kise97
Зарегистрирован: 2012-05-31
Сообщения: 83
Репутация: +  4  -
Профиль  

Нуждаюсь в codereview.

FishHook
Такая запись будет неправильной в python 3

Офлайн

#7 Июль 15, 2014 17:16:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нуждаюсь в codereview.

kise97
Это что с чего это вдруг?



Офлайн

#8 Июль 15, 2014 18:56:44

kise97
Зарегистрирован: 2012-05-31
Сообщения: 83
Репутация: +  4  -
Профиль  

Нуждаюсь в codereview.

FishHook
Это что с чего это вдруг?
Убей не помню где, но прочитал, что лучше использовать len() чем не использовать его.

Офлайн

#9 Июль 15, 2014 21:01:43

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

Нуждаюсь в codereview.

kise97
лучше использовать len() чем не использовать его

>>> class List(list):
...     def __bool__(self):
...         return len(self) > 0 and self[0] > 5
... 
>>> lst = List(range(3))
>>> bool(lst), len(lst)
(False, 3)
>>> 
>>> lst[0] = 10
>>> bool(lst), len(lst)
(True, 3)
>>>

По той же причине используют проверку на None вместо простой логической проверки. Если объект теоретически может иметь другой тип, то теоретически в нём может быть переопределён __bool__.



Офлайн

#10 Июль 16, 2014 05:38:14

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нуждаюсь в codereview.

py.user.next
По той же причине используют проверку на None вместо простой логической проверки. Если объект теоретически может иметь другой тип, то теоретически в нём может быть переопределён __bool__.
Проверку на None делают, когда объект может быть нулем, пустой строкой, пустым списком, т.д. и эту ситуацию нужно отделить от случая, когда состояние объекта еще не определено.
>>>Если объект теоретически может иметь другой тип, то теоретически в нём может быть переопределён __bool__.
Теоретически в объекте может быть переопределён __len__.
Как правило питон-программист знает тип переменной, с которой работает.
В обсуждаемом случае
def foo(*args):
проверять args на длину, ИМХО, говнокод.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version