Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 16, 2012 15:42:31

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Оцените код новичка

Вы о чем вообще? )
Не вызывать get_options - это экономия на спичках. Она вызывается один (!) раз и служит чисто утилитарным целям - распарсить коммандную строку.
Когда я делаю cli-утилиты я поступаю точно также - выношу код в отдельную функцию и если мне понадобилось изменить или добавить опции/аргументы - я точно знаю где это нужно делать. С точки зрения читабельности/архитектуры такой подход лучше, на мой вгляд.

Офлайн

#2 Янв. 16, 2012 15:50:04

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Оцените код новичка

Мне тоже непонятно почему так прицепились к этой функции :)



Офлайн

#3 Янв. 16, 2012 16:43:02

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

Оцените код новичка

Soteric
Мне тоже непонятно почему так прицепились к этой функции :)
Потому что она не нужна



Офлайн

#4 Янв. 16, 2012 16:47:40

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Оцените код новичка

FishHook
Потому что она не нужна
Кому?
Вы предлагаете писать код единой простыней, дабы не вызывать функции?

Офлайн

#5 Янв. 16, 2012 16:55:20

vlados
От:
Зарегистрирован: 2011-07-28
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Оцените код новичка

s0rg
FishHook
Потому что она не нужна
Кому?
Вы предлагаете писать код единой простыней, дабы не вызывать функции?
Обычно люди делают так, чтобы им было удобно читать, весь код без классов, функций и т.п. будет похож на “говно-код”, но если это писал человек, которому так понятней, пускай так и делает.
Я например пишу так, как понятно мне, хотя ели спрашиваю на форуме или где-то копирую код, я его не трогаю, ибо писал не я, работает - не трогай :) Сразу писать для людей не научишься, питон очень интересная штука в которой много своих хитростей.
Если хотите научится хорошо писать, то смотрите чужие примеры, книги, справку и т.п.



Офлайн

#6 Янв. 16, 2012 17:13:03

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Оцените код новичка

Кстати к вопросу о тестах:

from timeit import Timer

def test1():
'''def inside loop'''
def f():
pass

for _ in xrange(1000000):
f()

def test2():
'''def outside loop'''
def foo():
for _ in xrange(1000000):
pass
foo()

def test3():
'''without def'''
for _ in xrange(1000000):
pass

time = Timer()
for fn in (test1, test2, test3):
start = time.timer()
fn()
print 'Test: %s, result: %f' % (fn.__doc__, time.timer() - start)
Результат у меня:
Test: def inside loop, result: 0.131214
Test: def outside loop , result: 0.023449
Test: without def, result: 0.024198

Отредактировано (Янв. 16, 2012 17:14:05)

Офлайн

#7 Янв. 16, 2012 17:47:06

vlados
От:
Зарегистрирован: 2011-07-28
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Оцените код новичка

У меня:
Test: def inside loop, result: 0.174685
Test: def outside loop, result: 0.027839
Test: without def, result: 0.027960

from timeit import Timer

def test1():
'''def inside loop'''
def f():
pass

for _ in xrange(1000000000):
f()

def test2():
'''def outside loop'''
def foo():
for _ in xrange(1000000000):
pass
foo()

def test3():
'''without def'''
for _ in xrange(1000000000):
pass

time = Timer()
for fn in (test1, test2, test3):
start = time.timer()
fn()
print 'Test: %s, result: %f' % (fn.__doc__, time.timer() - start)
Test: def inside loop, result: 162.563391
Test: def outside loop, result: 28.067575
Test: without def, result: 28.061522



Офлайн

#8 Янв. 16, 2012 17:56:32

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Оцените код новичка

1000000 достаточно же

Офлайн

#9 Янв. 16, 2012 19:10:48

CHAOS
От:
Зарегистрирован: 2011-11-19
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Оцените код новичка

Друзья, раз уж пошла такая пьянка, скажите, как вы относитесь к импорту внутри функций? Насколько это соответствует духу Python, есть ли какие-то минусы?



Офлайн

#10 Янв. 16, 2012 19:23:13

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Оцените код новичка

CHAOS
как вы относитесь к импорту внутри функций?
Мое мнение - лучше так не делать, потом легко это потерять.

Ну и:
pep8
- Imports are always put at the top of the file, just after any module
comments and docstrings, and before module globals and constants.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version