Python Goodies

Это специальный пост для тех, кто не попробовал ещё Python в деле :) И особенно специально для Хаафа.

Вот такие плюсы есть у Python по сравнению с чем-нибудь ещё.

0. Painless.

В общем - главное :))) Лаконично и работает.

1. Интерактивный интерпретатор.

То есть, ставишь себе Python, запускаешь в командной строке python - и можно уже играться.

>>> a,b,c = 1,3,4
>>> max(a,b)
3

2. Мощный набор встроенных методов и типов, паттернов, базовых синтаксических конструкций

“Из коробки”, без всяких инклудов-импортов, есть списки, хэш-мэпы, min/max’ы, “декораторы”, лямбда-функции, преобразования кодировок, работа с файлами.

Примеры без экзотики:

def is_str_quoted(var):
    return var[0] == var[-1] and var[0] in ("'", '"')

var[-1] - последний элемент в var. Гениально. Отрицательная индексация - это шедевр! :)

“Нарезка” строк, списков по индексу делается универсальной конструкцией, вот так:

>>> a = 'Little Johny'
>>> 'Big ' + a[7:-1]
'Big John'

Или вот - применить ко всем элементам списка функцию и вернуть список результатов:

>>> add_ly = lambda x: x + 'ly'
>>> map(add_ly, ['rapid', 'kind', 'identical'])
['rapidly', 'kindly', 'identically']

Пояснение: lambda x: x + ‘ly’ - это функция, которая принимает x и возвращает x + ‘ly’, анонимные функции их ещё называют или лямбда-функции.

Очень часто - просто не нужны классы, хватает встроенного типа dict, чтобы представить какой-то объект:

>>> response = {'code': 1, 'message': "Hi, I'm ok."}
>>> print response['code']
1

И вот - функция с произвольным набором параметров:

def show_args(*args, **kwargs):
    times = kwargs['times']
    for i in range(times):
        for a in args:
            print a

>>> show_args('Rabbits', 'like', 'fuel', times=3)
Rabbits
like
fuel
Rabbits
like
fuel
Rabbits
like
fuel

Неименованные параметры - принимаются как список, именованные - как обычный dict (хэш-мэп).

Или вот - объявление класса, конструирование, наследование - ничего лишнего.

class GenericBoss:
    def __init__(self, owner=None):
        self.owner = owner

    def say_what_should_we_do(self):
        print self.owner.say_what_should_we_do()

class BigBoss(GenericBoss):
    def say_what_should_we_do(self):
        print "Work!"

>>> GenericBoss(owner=BigBoss()).say_what_should_we_do()
'Work!'

3. Библиотеки

Много крутых библиотек про для работы с сетью, с текстовыми данными, с базами данных, с картинками.

Хорошие - это вот, например:

>>> import feedparser
>>> d = feedparser.parse("http://rudi-kodoblog.05bit.com/rss")

или

from PIL import Image
im = Image.open("bride.jpg")
im.rotate(45).save("bride_rot_45.jpg")

Для GUI, интерактивной графики - поменьше конечно, но нарождается. Есть bind’ы к C/C++ библиотекам. Вот такое даже есть - pythonogre.com.

4. Роман Ворушин и Анатолий Востряков программируют на питоне.

А это вам не хухры мухры.

:)

Notes

  1. rudyryk posted this