Найти - Пользователи
Полная версия: Оцените код новичка
Начало » Python для новичков » Оцените код новичка
1 2 3 4
s0rg
Вы о чем вообще? )
Не вызывать get_options - это экономия на спичках. Она вызывается один (!) раз и служит чисто утилитарным целям - распарсить коммандную строку.
Когда я делаю cli-утилиты я поступаю точно также - выношу код в отдельную функцию и если мне понадобилось изменить или добавить опции/аргументы - я точно знаю где это нужно делать. С точки зрения читабельности/архитектуры такой подход лучше, на мой вгляд.
Soteric
Мне тоже непонятно почему так прицепились к этой функции :)
FishHook
Soteric
Мне тоже непонятно почему так прицепились к этой функции :)
Потому что она не нужна
s0rg
FishHook
Потому что она не нужна
Кому?
Вы предлагаете писать код единой простыней, дабы не вызывать функции?
vlados
s0rg
FishHook
Потому что она не нужна
Кому?
Вы предлагаете писать код единой простыней, дабы не вызывать функции?
Обычно люди делают так, чтобы им было удобно читать, весь код без классов, функций и т.п. будет похож на “говно-код”, но если это писал человек, которому так понятней, пускай так и делает.
Я например пишу так, как понятно мне, хотя ели спрашиваю на форуме или где-то копирую код, я его не трогаю, ибо писал не я, работает - не трогай :) Сразу писать для людей не научишься, питон очень интересная штука в которой много своих хитростей.
Если хотите научится хорошо писать, то смотрите чужие примеры, книги, справку и т.п.
s0rg
Кстати к вопросу о тестах:
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
vlados
У меня:
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
s0rg
1000000 достаточно же
CHAOS
Друзья, раз уж пошла такая пьянка, скажите, как вы относитесь к импорту внутри функций? Насколько это соответствует духу Python, есть ли какие-то минусы?
s0rg
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.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB