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. Роман Ворушин и Анатолий Востряков программируют на питоне.
А это вам не хухры мухры.
:)