|
|
|
Python |
"о Python" или "о-о-о, Python!"Python - это интерпретируемый язык. Очень простой и очень глубокий. В стандраных средствах языка есть очень-очень много возможностей. На Python быстро и приятно писать, а скрипты легко отлаживать. На Python труднее написать плохой код, чем хороший. Python используется в качестве скриптового языка в различных графичесских программах (GIMP, Blender). Python - это очень динамичнеский язык. В процессе выполнения программы можно менять вообще всё: созданные классы, модифицировать функции, генерировать код и на лету компилировать в исполняемые выражения. Из-за огромных возможностей, удобства и логичности языка, после Python трудно писать на других языках, т.к. они будут казаться примитивными. Предупреждение . Что можно написать на Python?На Python можно написать GUI; управляющую логику сервера, написанного на C++; можно сделать самостоятельный сервер. Можно использовать Python для разработки сайтов. Благодаря множеству фреймвёрков и скорости выполнения скриптов, Python набирает популярность среди web-разработчкиков. Есть wsgi - стандарт взаимодействия Python с web-серверами, поэтому неважно работает ли ваш скрипт под apache или другим сервером. Часто я использую Python для своих практических целей. Например, получить код html-страницы, распарсить содержимое, вытащить ссылки. Или для обработки пачки фотографий перед выкладыванием в каталог. На мой взгляд, Python просто идеальный язык для разработки корпоративных баз данных. Можно написать сервер, работающий с базой данных, графические клиенты пользователей, обращающиеся к серверу по сети, распечатка документов. В программу можно быстро вносить доработки (создавать новые отчёты), в случае проблем очень быстро устранять ошибки. Фичи языка PythonОфициальный coding styleКогда только открываешь для себя Python, то немного удивляет синтаксис. Нет привычных фигурных скобок для определения границ блоков. Чтобы отделить блоки друг от друга - используются отступы от начала строки. Отсупы могут задаваться пробелами или табуляциями. Если отсуп стал больше, то значит начался блок. Если отсуп уменьшился, то блок закончился. Так очень круто был разрешён вечный спор о том, где надо размещать фигурную скобку, открывающую блок, - на той же строке или на следующей. Кроме того, в Python есть официальные рекомендации по coding style и специальная тулзина для проверки синтаксиса - pylint. Эта тулзина может быть прикручена к разным Python IDE, например, к PyScripter. ГенераторГенератор - это функция, которая запоминает своё состояние def a(): >>> 1 2 3 4 5 6 7 8 9 10 Построение регулярных выраженийвыбрать все div, внутри которых не содержится span <div([^s]|s[^p]|sp[^a]|spa[^n])*/div> Экранирование спецсимоволов>>> print re.escape( "\(\*%%_dd|\.|\\)$" ) import re cre = re.compile( "^d[.?$\s]+dd$", re.DOTALL ) print cre.search("d. ? .dd").group()
Built-in functionssupersuper - это функция для обращения к родительскому классу. Вроде понятно. А что будет если родительских классов несколько? class my1(object): К родительскому классу обратиться по имени, т.к. родительский класс всё равно должен быть доступен из того же модуля, где мы пишем класс. Но говорят, что положительно использовать функцию super; я не смог оценить её прелестей, т.к. при двухкратном наследовании возникают баги. По-моему, проще вызывать ClassName.__init__(self) propertyС помощью этой функции реализуются getter-ы и setter-ы class GetterSetterTest(object):
Оптимизация кодаДля проверки скорости выполнения каких-либо кусков кода есть специальный модуль, который называется timeit. Я его не использую, и мои результаты могут оказаться не совсем верными с точки зрения этого модуля. А проверяю я скорость так: dict-ыif "key" in MyDict: listИногда при обходе списка нужно ещё знать текущий номер, для этих целей предназначен итератор enumerate: for num, value in enumerate([3,4,6]): Для прохода по списку я часто использую списковые выражения: Другие эквиваленты
|
|
|
|
|