LINUX.ORG.RU

Предварительный релиз Python 2.5


0

0

Вышла бета-версия Python 2.5.
Новое в языке:

  • однострочные условные выражения (аналог X?Y:Z, PEP 308)
  • новый оператор with (PEP 343)
  • генераторы превратились в полноценные сопрограммы (coroutines, PEP 342)
Новые модули в стандартной библиотеке:
  • ctypes (прямой вызов Си-функций из .so и .dll)
  • ElementTree (упрощённая работа с XML)
  • wsgiref (стандартный интерфейс между веб-приложением и веб-сервером)
  • hashlib, sqlite3

Многочисленные оптимизации, в т.ч. операции со строками ускорены на 30% (http://wiki.python.org/moin/NeedForSp...)

Полный список изменений: http://docs.python.org/dev/whatsnew/w...

Скачать: http://www.python.org/ftp/python/2.5/

>>> Подробности

Ответ на: комментарий от AVL2

Казалось бы, при чем тут Чубайс?

P.S. Алексей, если хотите, мы можем обсудить ваши претензии по поводу альтовой сборки питона. И я, натурально, могу показать, что [несмотря на ряд недостатков] выработанное полиси, во-первых непротиворечиво, во-вторых, сильно обусловлено.

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

Что же касается возможности вызовов C-level функций, то я сам лично паковал для Альта такое расширение (оно было доступно ранее в виде third-party модуля).

В общем, не надо лишней грязи.

AlexM ★★★★★
()
Ответ на: комментарий от SKYRiDER

>Это _идеальный_ язык для новичка. Никакой особой среды разработки не нужно, достаточно любого нормального текстового редактора (vim, emacs). Если уж очень хочется IDE, то берите Komodo (*nix, Windows), Anjuta (*nix), Dr.Python (простенькая IDE для питона), PythonWin (входит в ActiveState Python), Visual Python (примочка для MS VS, Windows).

Я бы посоветывал взглянуть в сторону SPE... сыроват, но мне нравится :)

v12aml ★★
()
Ответ на: комментарий от shafff

Должен заметить, что в Дебиане имеются несколько версий интерпретатора сразу, согласно их полиси.

К сожалению, не всегда корректно разруливаются привязки [приложений] к определенной версии питона, что влечет за собой возможность получения неработоспособной комбинации пакетов, для которых, тем не менее, нет противоречий по зависимостям. Чтобы не быть обвиненным в голословности, скажу, что я добивался такой ситуации со скриптами для Amarok, которым требовались внешние модули.

AlexM ★★★★★
()
Ответ на: комментарий от Casus

>Кстати, ктонить приведёт пример, чем Python всё-таки лучше Perl

$ time python fib.py
3524578

real 0m6.932s
user 0m6.512s
sys 0m0.068s

$ time perl fib.pl
3524578
real 0m11.721s
user 0m10.285s
sys 0m0.144s

Вообще - http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=perl&am...

Это по скорости.

А так - покажи мне на Perl ... ну, например, Jabber-клиент уровня Gajim. Или игру, как Civ IV, в которой питоновские скрипты идут открытым слогом, так сказать :)

...

Хотя Питон далёк от идеала. Как раз сегодня нарвался на глюк из-за того, что в файле с пробелами сделал отступ табами... :)

KRoN73 ★★★★★
()

По моему странно, что в этом топике так мало обсирают питон :) не по лоровски как-то.

smartly ★★★
()
Ответ на: комментарий от anonymous

>> По моему странно, что в этом топике так мало обсирают питон

>релиза ждут

Выйдет релиз - проверим. Хотя, вероятно, и тогда аргументированной критики не будут, поскольку не все на нем писали.

AEP ★★★★★
()
Ответ на: комментарий от v12aml

почему-то eric забыли, а зря .. один из немногих кроссплатформенных RAD для питона (и ruby)

Syncro ★★★★★
()
Ответ на: комментарий от Casus

ну хотябы модулями. В perl - модуль это какая-то третья сущность и не каждый модуль кроссплатформенный, их не удобно включать в приложение (что-то вроде статичной поставки, чтобы везде работало). В python'е все намного проще.

Syncro ★★★★★
()
Ответ на: комментарий от Syncro

однообразностью подхода, в python разнообразие решений задачи может быть связяно только с дублированием функций модулями (в стандарной дистрибуции не часто попадается). в перле на каждую задачу может быть 10 решений в десяти вариантах каждое (из-за синтаксического разнообразия)

Syncro ★★★★★
()
Ответ на: комментарий от Syncro

Ну наконец-то ЛОР оживает!!!

>> ну хотябы модулями. В perl - модуль это какая-то третья сущность и не каждый модуль кроссплатформенный, их не удобно включать в приложение (что-то вроде статичной поставки, чтобы везде работало). В python'е все намного проще.

Т.е. Питон спокойно подключает одну и ту же либу скомпиленную на любой платформе? Что-то я в программировании пропустил вообще и в питоне в частности. В Перле проблемы только с такими либами.

>>> однообразностью подхода, в python разнообразие решений задачи может быть связяно только с дублированием функций модулями (в стандарной дистрибуции не часто попадается). в перле на каждую задачу может быть 10 решений в десяти вариантах каждое (из-за синтаксического разнообразия)

Тебя напрягает, что кто-то может сделать то же, что и ты, но по другому? И его решение будут короче и эффективнее? Комплексы неполноценности надо лечить, а не выставилять как аргумент.

Замечу, что питон продвюгают только по тому, что на нем удобнее считать кол-во сторочек написанных конкретным программистом. :)))

;))) Но когда введут скобки он станет подвидом перла.

anonymous
()
Ответ на: комментарий от anonymous

Вот что мне не нравится в питоне, так это какая-то назойливость в отступах. В хаскеле тоже структура программы меняется в зависимости от отступов, но там этого просто не замечаешь, как-то красиво и удобно сделано. В питоне же это раздражает.

> После Boo новые языки ненужны

Может хватит уже славить поделия, завязанные на .NET? Несвободная технология таковой и останется.

Zmacs
()
Ответ на: комментарий от KRoN73

> $ time python fib.py

> $ time perl fib.pl

Питоновкий и перловский код для чисел Фибоначчи в студию, так сказать, для опознания... :=-)

Rubystar ★★
()
Ответ на: комментарий от Rubystar

> Питоновкий и перловский код для чисел Фибоначчи в студию, так сказать, для опознания... :=-)

Тебе же ссылку дали:

http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=perl&am...

Смотри тест recursive. Поверь - .то оптимальные варианты ибо складывались в течении нескольких лет фанатами этих языков.

anonymous
()
Ответ на: комментарий от Rubystar

теж дали ссылку, там всё и лежит сейчас питон занимает 8 место по популярности, о какой смерти вы говорите?) почему-то забыли про вэб-фреймворки типа django и turbogears, а, это так сказать, своя ниша. Перл хорош для консоли, для администрирования, для прикладного ПО думаю не очень, да и где ваше перловское ПО?)) по-моему кто умирает - так это именно перл, когда там новая версия выйдет?) и то с одними багфиксами и нихрена нового, или там уже всё есть? не думаю В)

anonymous
()
Ответ на: комментарий от anonymous

они делают parrot, который всем покажет кузкину мать:)

anonymous
()
Ответ на: комментарий от anonymous

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

писать на нём для x86 действительно редко где придётся. для реверс-инжиниринга - в самый раз :)

anonymous
()
Ответ на: комментарий от anonymous

>почему-то забыли про вэб-фреймворки типа django

да, django - это руль немеряный :) не нарадуюсь вот

>Перл хорош для консоли, для администрирования, для прикладного ПО думаю не очень, да и где ваше перловское ПО?))

думаю, у каждого перловское ПО свое :) в смысле самописное

>по-моему кто умирает - так это именно перл, когда там новая версия выйдет?

не переживай, не умирает. Со своими задачами перл справляется на 200%. Кстати, напомнить, как расшифровывается "perl"? ;)

geek ★★★
()
Ответ на: комментарий от Rubystar

>Питоновкий и перловский код для чисел Фибоначчи в студию, так
>сказать, для опознания... :=-)

fib.pl
==================================================
sub fib
{
    return $_[0]<3 ? 1 : fib($_[0]-1)+fib($_[0]-2);
}

print fib(33);

fib.py
==================================================
#!/usr/bin/python

def fib(n):
    if n>2:
        return fib(n-1)+fib(n-2)
    else:
        return 1

print fib(33)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

> Т.е. Питон спокойно подключает одну и ту же либу скомпиленную на любой платформе?

я имел ввиду то что в питоне нет деления на .pl .pm и проч. нет каких-то особо специфичных(для платформы) спообов инсталяции

> Тебя напрягает, что кто-то может сделать то же, что и ты, но по другому? И его решение будут короче и эффективнее?

да меня вобщем ниче не напрягает, просто спросили "чем лучше":)

Syncro ★★★★★
()
Ответ на: комментарий от v12aml

> Я бы посоветывал взглянуть в сторону SPE... сыроват, но мне нравится :)

Про SPE и Eric3 я как-то забыл. Однако целью предыдущего поста и не стояло дать исчерпывающий перечень всех Python IDE.

SKYRiDER ★★★
()
Ответ на: комментарий от Syncro

В Святой мантре Zen of Python написано, строки 13 и 14:

There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch.

Там же, в строке 8:

Special cases aren't special enough to break the rules.

Zen of Python - это наше Всё!

import this, brothers!!!

anonymous
()
Ответ на: комментарий от anonymous

> Гвидо вроде как бороду отрастил )))

Это обнадёживает :)

Casus ★★★★★
()
Ответ на: комментарий от KRoN73

> $ time python fib.py

Тесты скорости мне не интересны. Поскольку далеко не всё сводится только к измерениям стоимости вызовов, или ещё чего.

> А так - покажи мне на Perl ... ну, например, Jabber-клиент уровня Gajim. Или игру, как Civ IV, в которой питоновские скрипты идут открытым слогом, так сказать :)

Я парень простой, мне эти поделки по барабану. Когда потребовалось писать гуй, я писал на Perl/Tk. Мне интересно как программисту, может ли окупиться время на изучение Python, или получится "то же самое, вид сбоку". И, кстати, гуй мне по барабану. Писать на Perl программы в несколько тыщ строк мне не привыкать, демоны, сетевые демоны -- всё давно наработано на Perl. Так вот будет ли с этой точки зрения какой-то плюс от Python?

Casus ★★★★★
()
Ответ на: комментарий от Syncro

> ну хотябы модулями....

Я мысль тут не уловил. Чистые Perl-модули нужно специально постараться написать не кросс-платформенным. "Неудобно включать в приложение" -- я тоже не понял. Если модуль находится не в @INC, то никто не мешает сделать use lib $path_to_the_module;

> В python'е все намного проще.

Может от незнания Perl? :)

Casus ★★★★★
()
Ответ на: комментарий от KRoN73

Что-то мне подсказывает, что любая просьба объяснить перловщику прелесть питона (и наоборот) все равно скатится в холливор или тупой флейм. Но все же хотелось бы спросить, чем черт не шутит, может найдутся люди, которые не ради флейма... В общем вопрос такой, хотелось бы услышать от бывших фанатов перл (т.е. тех, кто программировал на перл многие годы хотя бы потому, что им нравится сам язык), перешедших впоследствии на питон, в чем преимущества питона. Потому как я сам все поглядываю в сторону питона, но что-то не пускает, то ли привычка, то ли еще что. Да и хочется посмотреть на Perl 6...

> А так - покажи мне на Perl ... ну, например, Jabber-клиент уровня Gajim. Или игру, как Civ IV, в которой питоновские скрипты идут открытым слогом, так сказать :)

Не ради меряния пиписьками... Но интересная штука. Сейчас в некоторых 3д и не 3д пакетах в качестве скриптового языка используется питон. Каково же было мое удивление, когда в одном из пакетов в качестве скриптового языка увидел перл :)

anonymous
()
Ответ на: комментарий от jedy

> а у меня вопрос, питон это нормальный язык для новичка или лучше начать с чего то другого? и какую среду разработки использовать?

Каждому свое :) Я тоже на нем стал писать после javы и только рад. IDE: emacs + python-mode + outline + ipython + pdb + ecb + pymacs (пытаюсь на нем написать дергалку описания функций из wxpython в emacs)

codebuger
()
Ответ на: комментарий от AlexM

Алексей, особенности сборок альта давно уже не являются предметом моего интереса (стало быть, и негатива никакого быть не может!). Так, дружеское подтрунивание. Даже смайлик поставил...

В случае с ctypes ситуация проста. Господа с python.org решили, что вызов сишных функций _должен_ быть в стандартной поставке питона. Я в этом с ними абсолютно согласен. Жаль, что это решение, скорее всего, будет проведено не везде. Хотя, наверное, и горя немного...

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

Пиписьками по скорости меряемся, да?

 time  perl a.pl
3524578
real    0m42.152s
user    0m41.855s
sys     0m0.033s

time python a.py
3524578

real    0m13.311s
user    0m12.806s
sys     0m0.093s

time ./a.out
3524578

real    0m0.207s
user    0m0.201s
sys     0m0.004s

a.c
----------------------

#include <stdio.h>

int fib(int n)
{
  if (n > 2)
  {
      return fib(n-1) + fib(n-2);
  }
return 1;
}

int main(void)
{
  fprintf(stderr, "%d\n", fib(33));
}


Супер-мега-Питон медленее сей в ~64 раза. И при этом "на нем можно писать все"?
Ну, пишите-пишите. Особенно - математический расчетный софт.


Меряться надо не скоростью расчетов, для этого ни Питон, ни Перл не 
предназначены. Меряться надо удобством написания, поддержки и 
сопроводжения софта, а также наличием готовых решений.

У Перла этих решений - целый CPAN.

А как обстоят дела у Питона?

anonymous
()
Ответ на: комментарий от anonymous

2 anonymous (*) (25.06.2006 15:59:12):

1. Любой интерпретатор медленее C.

2. Для Python есть аналог jit-компилятора psyco, ускоряет большинство программ на порядок. Есть pyrex - препроцессор переводящий python-код в С

3. Для математических расчетов есть математические библиотеки (например pyNumeric).

4. Репозиторий софта на/для Python http://www.vex.net/parnassus/

anonymous
()
Ответ на: комментарий от anonymous

А как у перла дела с ООП?

Я так понимаю что не очень. А на питоне с ООП очень хорошо. Так что если ты вкурил ООП то питон тебе изрядно облегчит жизнь.

Doxygen понимает питон, но не понимает Перл. Тоже плюс питону.

Кстати, интересно, есть ли ORM-ы для перла или что-то типа Python DBAPI?

redvasily
()
Ответ на: комментарий от anonymous

В кратце: газификация лужи анонимусом любителем С защитана.

Подробности ниже :-)

Простое добавление 

import psyco
psyco.full()

разгоняет питон на fib.py у меня на машине в 32 раза, и теперь питон
 работает в два раза медленне чем С

А "математический расчетный софт" на питоне тоже пишется замечательно,
 недавно надо было сделать в софтине на питоне КИХ фильтр на 2000 
отсчётов для фильтрации данных поступающих с темпом 1000 Гц. Быстро 
сляпал на питоне с исползованием Numeric самый дубовый фильтр который 
только пришёл в голову:

import Numeric

class Filter(object):
    def __init__(self, filter='filter2000.dat'):
        data = Numeric.array([float(l) for l in file(filter).readlines()],
            Numeric.Float)
        self.history = Numeric.zeros((len(data)), Numeric.Float)
        self.coeff = Numeric.array(data, Numeric.Float)
        
        self.count = 0
        
    def __call__(self, data):
        self.count += 1
        self.history[1:] = self.history[:-1]
        self.history[0] = data
        
        result = Numeric.sum(self.history * self.coeff, 0)
        return result

Потом переписал фильтр на С, тоже особо не заморачиваясь. Самое 
смешное что питоновская версия работает быстрее за счёт того что большая часть времени тратится на вычисление скалярного произведения
векторов, а скалярное произведение в Numeric-е работает быстрее чем 
любой самописный велосипед.

В итоге в дело пошёл питоновский филтр, а сишный модуль отправился в топку.

Python рулит.
Спасибо товарищу GvR за наше счастливое настоящее.

redvasily
()
Ответ на: комментарий от anonymous

psyco рулит, а жаба сосёт:)
$ time python test.py
3524578

real 0m0.243s
user 0m0.196s
sys 0m0.012s
$ time java fib_class
3524578

real 0m2.702s
user 0m2.616s
sys 0m0.016s
$ cat test.py
import psyco
psyco.full()
def fib(n):
if n>2:
return fib(n-1)+fib(n-2)
else:
return 1

print fib(33)
$ cat fib_class.java
public class fib_class
{
public static void main(String args[])
{
int f = fib(33);
System.out.println(f);
}

public static int fib(int n)
{
if (n > 2) return fib(n - 2) + fib(n - 1);
else return 1;
}

}

anonymous
()
Ответ на: комментарий от redvasily

> А как у перла дела с ООП?

Он есть. Больше про него трудно что-то сказать :) Т.е. внутри оно не особо удобно, но снаружи пользоваться этим можно.

Casus ★★★★★
()

Как насчет написать и запустить программу на питоне за 60 секунд? Кто справится?

anonymous
()
Ответ на: комментарий от anonymous

> Меряться надо не скоростью расчетов, для этого ни Питон, ни Перл не предназначены.

http://scipy.org/

anonymous
()

> level = 1 if logging else 0

дааа, не перевелись еще программисты, которые вместо х = 1-х лепятъ ахинею типа:

if x = 1
   x = 0
else
   x = 1

грустъно...

anonymous
()
Ответ на: комментарий от anonymous

> дааа, не перевелись еще программисты, которые вместо х = 1-х лепятъ ахинею типа:

в питоне True!=1

anonymous
()
Ответ на: комментарий от anonymous

>которые вместо х = 1-х лепятъ ахинею типа: ...

всегда писал x^=1 (для подобных флажков)

но что, если logging не число?

smartly ★★★
()
Ответ на: комментарий от anonymous

компилятор такой код переведёт в x=0

а питон скажет что if x=1: это SyntaxError

anonymous
()
Ответ на: комментарий от EasyRider

>Прочитал вот захватывающую статью про питон. http://sin-avatar.narod.ru/stories/sad_story_about_python/index.html Интересно, это правда?

всего лишь не очень изящный способ прострелить себе ногу

нормальный человек не будет такого делать :)

geek ★★★
()
Ответ на: комментарий от geek

кроме того, питон эту память использует повторно. А вот системе действительно не отдает

т.е.

a = [i for i in xrange(10000000)] del a

процесс сожрал 160M памяти

повторение операции создания списка и удаления: потребление памяти не увеличивается

не вижу ничего ненормального в таком поведении

geek ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.