[Python] Best practices
От: CiViLiS Россия  
Дата: 06.05.09 19:01
Оценка:
Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.
И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.
... << RSDN@Home 1.2.0 alpha 4 rev. 1102>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re: [Python] Best practices
От: neFormal Россия  
Дата: 06.05.09 19:02
Оценка:
Здравствуйте, CiViLiS, Вы писали:

CVL>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.

баян
http://www.rsdn.ru/forum/message/3210660.1.aspx
Автор: ryf
Дата: 11.12.08
...coding for chaos...
Re: [Python] Best practices
От: Константин Россия  
Дата: 06.05.09 21:14
Оценка:
Здравствуйте, CiViLiS, Вы писали:

CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.


Стандартная библиотека python
Re[2]: [Python] Best practices
От: CiViLiS Россия  
Дата: 07.05.09 04:45
Оценка:
Здравствуйте, neFormal, Вы писали:

F>баян

F>http://www.rsdn.ru/forum/message/3210660.1.aspx
Автор: ryf
Дата: 11.12.08

вопрос может и боянный, но только ответа я там не нашел. Получается кроме двух книг ("Язык программирования Python" и "Dive Into Python") и нету ничего? Ок, будем изучать статьи с Python.ru и задавать тупые вопросы тут
Например как посчитать количество строк в файле? Могу предложить два варианта: открыть файл в памяти и сделать поиск по "\n\r", или сделать типа
n = 0;
for line in f:
    n++


Какой из них более эффективный, с учетом того что понадобится второй проход? Файлы примерно по 10 метров. Или в контексте питона вопрос об эффективности не принято задавать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1102>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[3]: [Python] Best practices
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 07.05.09 06:39
Оценка: -1
Здравствуйте, CiViLiS, Вы писали:

CVL>Например как посчитать количество строк в файле? Могу предложить два варианта: открыть файл в памяти и сделать поиск по "\n\r", или сделать типа

CVL>
CVL>n = 0;
CVL>for line in f:
CVL>    n++
CVL>


CVL>Какой из них более эффективный, с учетом того что понадобится второй проход? Файлы примерно по 10 метров. Или в контексте питона вопрос об эффективности не принято задавать?


Ответ будет тот же что и для perl, C++ и др. ЯП
Re: [Python] Best practices
От: Аноним  
Дата: 07.05.09 07:17
Оценка:
Здравствуйте, CiViLiS, Вы писали:

CVL>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.

из первых рук. Плюс есть еще блог князя гвидона, ссылку не знаю
Re[3]: [Python] Best practices
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 07.05.09 07:43
Оценка: 5 (2)
Здравствуйте, CiViLiS, Вы писали:

CVL>Например как посчитать количество строк в файле?


С т.з. красоты кода и производительности, можно запитонить что-нибудь типа этого:

print "%d строк" % len(open("C:/textfile.txt").readlines())


С т.з. затрат памяти, лучше:

f = open("C:/textfile.txt")
n = 0
for line in f.xreadlines():
    n+=1
f.close()
print "%d строк" % n



[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: [Python] Best practices
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 07.05.09 07:57
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

CVL>>Например как посчитать количество строк в файле?


В чем согласены с моим отчетом?
Re[3]: [Python] Best practices
От: neFormal Россия  
Дата: 07.05.09 08:14
Оценка:
Здравствуйте, CiViLiS, Вы писали:

F>>баян

F>>http://www.rsdn.ru/forum/message/3210660.1.aspx
Автор: ryf
Дата: 11.12.08

CVL>вопрос может и боянный, но только ответа я там не нашел. Получается кроме двух книг ("Язык программирования Python" и "Dive Into Python") и нету ничего?

есть, конечно.. но либо старое, либо на английском
вот например, любопытная книга: http://rapidshare.com/files/75872398/Addison_Wesley_Text_Processing_In_Python.zip
на русском книг почти нет..
а "лучшие практики" можно поискать в блогах.. люди часто пишут по поводу разных решений при использовании питона..

CVL>Ок, будем изучать статьи с Python.ru и задавать тупые вопросы тут


правильно.. на самом деле это всё заговор.. чтоб форум "Динамические языки" не загнулся без вопросов..
...coding for chaos...
Re: [Python] Best practices
От: antiPooH  
Дата: 07.05.09 08:32
Оценка: 5 (2)
Здравствуйте, CiViLiS, Вы писали:

CVL>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

http://code.activestate.com/recipes/langs/python/
CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.
http://pypi.python.org/

python.ru уже сто лет не обновлялся, похоже брошенный, смотрите лучше http://python.su/ там и форум активный
Re[2]: [Python] Best practices
От: slava_phirsov Россия  
Дата: 07.05.09 08:46
Оценка:
Здравствуйте, antiPooH, Вы писали:

PH>python.ru уже сто лет не обновлялся, похоже брошенный, смотрите лучше http://python.su/ там и форум активный


Я на python.ru с пару месяцев назад заходил, так опера тут же выдала, что мне пытаются установить какое-то приложение. Проверять что к чему я не стал, просто ответил Cancel и больше туда не суюсь. Рулит
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re[3]: [Python] Best practices
От: antiPooH  
Дата: 07.05.09 09:26
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

_>Рулит

python.org несомненно рулит но на python.su русскоязычное сообщество
Re[5]: [Python] Best practices
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 07.05.09 10:32
Оценка:
Здравствуйте, achmed, Вы писали:

A>Здравствуйте, kochetkov.vladimir, Вы писали:


CVL>>>Например как посчитать количество строк в файле?


A>В чем согласены с моим отчетом?


Ну, скажем так, я не согласен со столь мутной формулировкой из которой непонятно, какой именно ответ (единый для всех ЯП) имелся ввиду

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: [Python] Best practices
От: SHorrty Россия  
Дата: 07.05.09 13:02
Оценка:
Здравствуйте, CiViLiS, Вы писали:

CVL>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.

Много рецептов есть в этой книге: Python Cookbook.
Re[4]: [Python] Best practices
От: CiViLiS Россия  
Дата: 07.05.09 17:59
Оценка:
Здравствуйте, neFormal, Вы писали:

F>есть, конечно.. но либо старое, либо на английском

Я не привиредлив

F>вот например, любопытная книга: http://rapidshare.com/files/75872398/Addison_Wesley_Text_Processing_In_Python.zip

спасибо почитаю.

F>а "лучшие практики" можно поискать в блогах.. люди часто пишут по поводу разных решений при использовании питона..

К сожалению, в данный момент нету времени на поиски по различным блогам, да и знаний/критериев для поиска. Хотелось бы найти место, где это уже до меня кто нить собрал

F>правильно.. на самом деле это всё заговор.. чтоб форум "Динамические языки" не загнулся без вопросов..

ок
... << RSDN@Home 1.2.0 alpha 4 rev. 1208>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[2]: [Python] Best practices
От: SHorrty Россия  
Дата: 08.05.09 03:47
Оценка: 29 (4)
Здравствуйте, SHorrty, Вы писали:

SH>Здравствуйте, CiViLiS, Вы писали:


CVL>>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

CVL>>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.

SH>Много рецептов есть в этой книге: Python Cookbook.


В догонку:
* Python best practices
* PLEAC-Python (PLEAC: Programming Language Examples Alike Cookbook)
Re[4]: [Python] Best practices
От: FR  
Дата: 08.05.09 09:02
Оценка: 8 (2) +2 :)
Здравствуйте, kochetkov.vladimir, Вы писали:

CVL>>Например как посчитать количество строк в файле?


KV>С т.з. красоты кода и производительности, можно запитонить что-нибудь типа этого:


....

KV>С т.з. затрат памяти, лучше:


с обоих т. з. лучше так :

print sum( (1 for x in open("test.txt")) )
Re[5]: [Python] Best practices
От: CiViLiS Россия  
Дата: 11.05.09 12:39
Оценка: 3 (2)
Здравствуйте, FR, Вы писали:

FR>с обоих т. з. лучше так :

FR>
FR>print sum( (1 for x in open("test.txt")) )
FR>


Не знаю как с точки зрения памяти, но вот с точки зрения производительности этот способ сливает в семь раз всем остальным:

методвремякраткое описание метода
xline0.703for l in input
xline20.718for l in input.xreadlines()
xline2a1.001for l in input.readlines()
xline36.680sum(1 for x in input)
xline40.797len(input.xreadlines())
xline4a0.860len(input.readlines())
Версия питона 2.6.1, запускал под виндой, компилял с и без оцией -O (от нее результаты практически не зависят):

import profile

def xline(filename, showResult):
    input = open(filename, 'r')
    count = 0
    for l in input:
        count += 1
    if showResult:
        print count

def xline2(filename, showResult):
    input = open(filename, 'r')
    count = 0
    for l in input.xreadlines():
        count = count + 1
    if showResult:
        print count

def xline2a(filename, showResult):
    input = open(filename, 'r')
    count = 0
    for l in input.readlines():
        count = count + 1
    if showResult:
        print count

def xline3(filename, showResult):
    input = open(filename, 'r')
    count = sum(1 for x in input)
    if showResult:
        print count

def xline4(filename, showResult):
    input = open(filename, 'r')
    count = len(input.readlines())
    if showResult:
        print count

def xline4a(filename, showResult):
    input = open(filename, 'r')
    count = len(input.readlines())
    if showResult:
        print count



filename = '3.log'
xline(filename, True)
showResult = False;
profile.run('xline(filename, showResult)')
profile.run('xline2(filename, showResult)')
profile.run('xline2a(filename, showResult)')
profile.run('xline3(filename, showResult)')
profile.run('xline4(filename, showResult)')
profile.run('xline4a(filename, showResult)')



Возможно такой слив из-за вот этого "539498 function calls in 6.680 CPU seconds". У все остальных пишет 5-7 вызовов.
Запускал тесты не один раз, результаты каждый раз чуть другие но тенденция сохраняется.
... << RSDN@Home 1.2.0 alpha 4 rev. 1214>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[6]: [Python] Best practices
От: CiViLiS Россия  
Дата: 11.05.09 12:50
Оценка:
Здравствуйте, CiViLiS, Вы писали:

поправка в коде:
CVL>
CVL>def xline4(filename, showResult):
CVL>    input = open(filename, 'r')
CVL>    count = len(input.readlines()) # должно было быть xreadlines, но это естественно не возможно
CVL>    if showResult:
CVL>        print count
CVL>
... << RSDN@Home 1.2.0 alpha 4 rev. 1214>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[6]: [Python] Best practices
От: FR  
Дата: 11.05.09 13:15
Оценка: 6 (1)
Здравствуйте, CiViLiS, Вы писали:

CVL>Здравствуйте, FR, Вы писали:


FR>>с обоих т. з. лучше так :

FR>>
FR>>print sum( (1 for x in open("test.txt")) )
FR>>


CVL>Не знаю как с точки зрения памяти, но вот с точки зрения производительности этот способ сливает в семь раз всем остальным:


Померяй не профайлером а напрямую (хоть clock() из time) будут чудные открытия
Можешь также поменять profile на cProfile но это от "эффекта наблюдателя" сильно не избавит.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.