Введение в Python
Сейчас изучаю Python и решил поделится некоторыми заметками о этом языке, наподобие того как я рассказывал о Java. По Java я еще буду делать заметки, так что не расстраиваетесь...
В данное время, просто приоритеты расставлены так, что Python на первом месте! Чтобы серьезно попрактиковаться, я собираюсь на нем разрабатывать Либург (каталог IT-книг с рецензиями и очерками), в связке с Django.
Заметки основаны на книге Learning Python, которую я прикупил недавно, можно сказать что это даже конспект. Перейдем ближе к делу и начнем с введения в этот язык и технологию в целом.
Введение
Язык Python был изначально оптимизирован для достижения высокой скорости разработки, у него простой и интуитивно-понятный синтаксис (как по мне, так очень логичные конструкции, в следующих статьях я покажу это на конкретных примерах), динамическая типизация, отсутствие этапа компиляции (у Python динамическая компиляция) и встроенные инструментальные средства позволяют разработчикам создавать программы за более короткое время, чем при использовании других инструментов.
Он обладает такими возможностями, как модульность и объектно-ориентированное программирование, однако не обязывает использовать только ООП, вы также можете использовать процедурный подход.
Его объектная модель поддерживает такие понятия, как полиморфизм, перегрузка операторов и множественное наследование, однако, учитывая простоту синтаксиса и типизации Python, ООП не вызывает сложностей в применении. При наличии соответствующего связующего программного кода программы на языке Python могут использовать механизм наследования от классов реализованных на C++, Java и C#.
Основные факторы и преимущества этого языка
Многие компании во всем мире используют Python для разнообразных проектов, приведу краткий список этих компаний: NASA (научные вычисления), CERN, STSCI (Институт космического телескопа), NSA (шифрование и анализ разведданных), Apple, Google (в том числе и в поисковой системе), Яндекс, YouTube, BitTorrent (клиент peer-to-peer), Intel, Cisco, HP, Seagate, Nokia, Qualcomm, IBM, DreamWorks, Pixar (для анимационных фильмов) и многие другие организации во всем мире.
Качество программного обеспечения
Код на языке Python более ясен и легко читается, что несомненно улучшает качество программного кода в сравнении с другими языками сценариев (вспомним Perl). В этом мы убедимся в следующих статьях, когда перейдем к практической части.
Высокая скорость разработки
В сравнении с другими компилирующими языками программирования, такими как C, C++ и Java, Python значительно повышает производительность труда разработчика, так как эквивалентный код имеет в три и более раза меньший объем. Кроме того, программный код на языке Python запускается сразу же, минуя этапы компиляции и связывания.
Переносимость программ
Стандартная реализация языка Python написана на переносимом ANSI C, благодоря чему он компилируется и работает практически на всех основных платформах. Программы на языке Python могут выполняться на широком спектре устройств, начиная от наладонных компьютеров (PDA) и заканчивая суперкомпьютерами.
Большая часть программного кода на языке Python выполняется без изменений на любой поддерживаемой платформе:
- MS Windows и DOS;
- Mac OS и Mac OS X;
- FreeBSD, Linux, Solaris;
- BeOS, QNX, OS/2, VMS и VxWorks;
- PalmOS и PocketPC;
- Symbian и Windows Mobile;
- iPod и игровые консоли;
- и многие другие...
Более того, он имеет массу возможностей по созданию переносимых графических интерфейсов, программ доступа к базам данных, веб-приложений и т.д.
Поддержка библиотек
Python имеет большое число стандартных библиотек, которые вы можете использовать в своей программе, например такие как "библиотека для работы с регулярными выражениями", "библиотека для работы с сетью", так же вы можете написать свои библиотеки и использовать их на ряду со стандартными.
К числу сторонних библиотек можно отнести:
- NumPy - альтернатива Mathlab;
- PyGame - разработка игр и анимации;
- PIL - обработка графических изображений;
- PyRo - управление роботом;
- NLTK - анализировать фразы на естественном языке;
- библиотеки для работы с последовательным портом и т.д.
Интеграция компонентов
На сегодняшний день Python имеет возможность вызывать функции из библиотек на языке C/C++, сам вызываться из программ, написанных на языках C/C++, интегрироваться с Java-компонентами, взаимодействовать с другими платформами, как SOAP, XML-RPC, COBRA и т.д.
Возможность Python расширяться и встраиваться в системы на языках C и C++ делает его удобным и гибким языком для описания поведения других систем и компонентов. Прикладной интерфейс C API в Python позволяет программа на языке C вызывать и быть вызываемыми из программ на языке Python.
Такие инструменты, как SWIG и SIP, автоматически генерирующие программный код, могут автоматизировать действия по связыванию скомпилированных компонентов в Python для последующего использования их в сценариях.
А такие огромные платформы, как поддержка COM в Windows, Jython - реализация Python на языке Java, IronPython - реализация на базе .NET, представляют альтернативные возможности организации взаимодействий с компонентами. Например в Windows, программы на Python могут управлять такими приложениями, как Word или Excel.
Качество и поддержка ПО
Философия Python диктует использование минималистского подхода, это означает, что даже при наличии нескольких вариантов решения задачи в этом языке обычно существует всего один очевидный путь, небольшое число менее очевидных альтернатив и несколько взаимосвязанных вариантов организации взаимодействий.
Инструкцияактивизует пасхальное яйцо, которое отображает некоторые принципы проектирования, лежащие в основе языка.import this
Давайте вспомним язык Perl, где каждый программист сочинял свой путь решения, после чего такой код было сложно понять другим программистам (в большинстве случаев и самому разработчику этого кода), а в нынешнее время самое главное это поддержка кода, а не быстрое его написание!
Что можно делать с помощью Python?
Python как многоцелевой язык программирования, практически не ограничен: он может использоваться для реализации чего угодно, от веб-сайтов и игровых программ до управления роботами и космическими кораблями.
Системное программирование
Встроенные в Python интерфейсы доступа к службам операционных систем делают его идеальным инструментом для создания переносимых программ и утилит системного администрирования. Программы на языке Python могут отыскивать файлы и каталоги, запускать другие программы, производить параллельные вычисления с использованием нескольких процессоров и потоков, и делать многое другое. Также поддерживает все типичные инструменты ОС: файлы, сокеты, каналы, процессы, многопоточную модель исполнения, поиск по шаблону с использование рег. выражений, аргументы ком. строки и много другое.
Системные интерфейсы в Python созданы переносимыми, поэтому вам не надо изменять код под каждую ОС.
Графический интерфейс
В состав Python входит стандартный ОО интерфейс к Tk GUI API, который называется Tkinter, позволяющий реализовывать переносимый графический интерфейс с внешним видом присущим операционной системе. Свободно распространяемое расширение PMW содержит дополнительные визуальные компоненты для набора Tkinter.
Кроме того, существует прикладной интерфейс wxPython GUI API, основанный на библиотеке C++, который предлагает альтернативный набор инструментов. Инструменты PythonCard и Dabo, построены на основе wxPython и Tkinter. При выборе соответствующей библиотеки вы сможете использовать другие инструменты для построения графических интерфейсов, например: Qt, GTK, MFC и Swing.
Веб-сценарии
Python поставляется со стандартными интернет-модулями, которые позволяют программам выполнять разнообразные сетевые операции. Сценарии могут производить взаимодействие через сокеты, извлекать данные полученные из html-форм; передавать файлы по протоколу FTP; обрабатывать файлы XML; передавать, принимать, создавать и производить разбор писем электронной почтой; производить взаимодействия по протоколам XML-RPC, SOAP, Telnet и т.д.
С помощью пакета mod_python для Apache можно запускать сценарии на языке Python, также он поддерживает шаблоны механизма Python Server Pages.
Система Jython обеспечивает бесшовную интеграцию Python/Java и поддерживает серверные апплеты, которые выполняются на стороне клиента.
Помимо всего этого для Python существуют полноценные пакеты веб-разработки, такие как Django, Zope, TurboGears, Pylons и WebWare, предназначенные для быстрого создания полнофункциональных высококачественных веб-сайтов.
Приложения баз данных
В Python имеется поддержка Sybase, Oracle, ODBC, MySQL, PostgreSQL, Informix, SQLite и многие другие. Также существует "переносимый прикладной программный интерфейс баз данных", предназначенный для доступа к БД SQL из сценариев Python, который унифицирует доступ к различным базам данных, что-то на подобие PDO для PHP.
Стандартный модуль Pickle реализует простую систему хранения объектов, позволяющий программам сохранять и восстанавливать объекты Python в файлах или в специализированных для этого объектах. Также можно использовать систему ZODB, которая является полостью ОО базой данных. Существует и еще один инструмент под названием SQLObject, который отображает реляционные таблицы в модель классов языка Python.
Python мощный
Python обеспечивает простоту и непринужденность языка сценариев и мощь, которую обычно можно найти в компилирующих языках. Превышая возможности других языков сценариев, такая комбинация делает Python удобным средством разработки крупномасштабных проектов.
- Динамическая типизация В Python нет необходимости объявлять явно типы объектов, он сам следит за ними.
- Автоматическое управление памятью Python автоматически распределяет память под объекты и освобождает ее (сборка мусора), когда объекты становятся ненужными.
- Модульное программирование Для создания крупных систем Python предоставляет такие возможности, как модули, классы и исключения. Они позволяют разбивать систему на составляющие, применять ООП для создания программного кода многократного использования и элегантно обрабатывать возникающие события и ошибки.
- Встроенные типы объектов Python предоставляет наиболее типичные структуры данных, такие как числа, списки, словари и строки, в виде особенностей, присущих самому языку программирования. Встроенные объекты могут комбинироваться друг с другом для представления данных с более сложной структурой.
- Встроенные инструменты Для работы со всеми этими встроенными типами данных у Python имеются средства, предназначенные для конкатенации, получения срезов, сортировка, отображение и многое другое.
- Библиотеки утилит В Python также входит большая коллекция библиотечных инструментов, которые поддерживают практически все, что может потребоваться, - от поиска с использованием рег. выражений до работы в сети.
- Утилиты сторонних разработчиков Так как Python открытый, то для него делают очень много сторонних библиотек, которые решить внутренними средствами не возможно. В сети можно найти свободную реализацию поддержки COM, средств для работы с изображениями, распределенных объектов COBRA, XML, механизмов доступа к БД и многое другое.
Несмотря на широкие возможности, Python имеет чрезвычайно простой синтаксис и архитектуру. В результате мы имеем мощный инструмент программирования, обладающий простотой и удобством, присущим языкам сценариев.
Python свободный
Вы можете найти в сети полные исходные тексты реализации Python. Нет никаких ограничений на его копирование, встраивание в свои системы или распостранение в составе ваших продуктов. Фактически вы сможете даже продавать исходные тексты Python, если появится такое желание.
Python назван в честь Монти Пайтона (Monty Python)
Несмотря на то что на эмблеме Python изображена рептилия, правда в том, что создатель Python, Гвидо ван Россум, назвал свое детище в честь комедийного сериала "Летающий цирк Монти Пайтона", который транслировался по каналу BBC.
Он большой поклонник этого сериала, как и многие программисты со всего мира! В связи с этим, традиционные имена переменных "foo" и "bar" часто заменены на "spam" и "egg". Также, конференции по языку Python обычно имеют именование "Испанская инквизиция".
Какие преимущества у Python по сравнению с другим языком?
- Python имеет более широкие возможности, чем Tcl. Язык Python поддерживает "программирование в целом", что делает его применимым для разработки крупных систем.
- Python имеет более четкий синтаксис и более простую архитектуру, чем Perl, что делает код более удобочитаемым и простым в сопровождении.
- Python проще и удобнее, чем Java. Python - язык сценариев, а Java унаследовала сложный синтаксис от таких языков программирования, как C++, например.
- Python проще и удобнее, чем C++, но не редко он не может конкурировать с C++, поскольку будучи языком сценариев, Python предназначен для другого круга задач.
- Python более зрелый и имеет более ясный синтаксис, чем Ruby. В отличии от Ruby и Java, ОО стиль программирования не является обязательным в Python - он не вынуждает использовать ООП в проектах, где этот стиль неприменим.
- Python обладает динамическими характеристиками таких языков, как SmallTalk и Lisp, но имеет более простой и традиционный синтаксис.
Резюме
Вот мы и закончили с введением в этот замечательный язык, однако теоретическая часть не окончена, в следующей статье расскажу про то как работает Python и PVM, также про альтернативные интерпретаторы на Java и .NET и для чего они нужны, и еще о многом другом.
Комментарии
Хорошая статья! Будем ждать продолжения!
p.s. очепятка "...нескольких нескольких..." в разделе "Системное программирование"
Спасибо, поправил!
ждем продолжения статьи,а по этой я так понял этот язык просто продолжения С++?
Нет, точно не C++
Почитайте еще http://adw0rd.ru/2009/python-howto-work/
"дург с другом"
поправьте
Поправил, спасибо!
Уважаемый автор, поправьте "Python проще и удобнее, чем C++, но не редко он не конкурировать с C++"...
Поправил, большое спасибо!
У кого есть какие-нить небольшие программки на питоне???
Под какую OS? У меня есть системные утилитки для FreeBSD, но думаю они мало пригодятся...
Напиши про многопоточность напримере брутфорса. Говорят Питон хорошо подходит для этого.
Python и Java не компилируемые языки программирования, а интерпретируемые, поэтому программы написанные на них (Python и Java) уступают по скорости работы программам на Си.
Подразумевалось что java компилируется в байт-код
"Python проще и удобнее, чем Java. Python — язык сценариев, а Java унаследовала сложный синтаксис от таких языков программирования, как C++, например.
Python проще и удобнее, чем C++, но не редко он не может конкурировать с C++, поскольку будучи языком сценариев, Python предназначен для другого круга задач."
То ли автор намеряно упрощает "для домохозяек и школьников", то ли на самом деле не понимает.
"Python и Java не компилируемые языки программирования, а интерпретируемые, поэтому программы написанные на них (Python и Java) уступают по скорости работы программам на Си."
Грамотеи. И Python и Java компилирующие языки. Другое дело, что они компилируют...
Вообще то сериал монти пайтона - пошлый, вульгарный... не знаю как еще назвать... почти все шутки там либо непристойные, либо жестокие и бОльшая часть программистов его вовсе не смотрит, а смотрят его прыщавые дрочеры любого возраста. (поправьте меня, если я ошибаюсь). Может ли язык "созданный по образу и подобию..." фанатом сериала быть эээ "хорошим"?
Данная статья также вульгарна - к чему писать, что Pixar использует Python?! А еще сотрудники Pixara используют туалетную бумагу. Дайте тогда точную ссылку на то, что 3D пиксаровская обработка написана именно на питоне и что на него перешли полностью с Си, потому что питон в чем то лучше.
Судя по типу ошибок: "не возможно", "много другое", "не редко", "библиотек, которые решить", "так же", "на ряду" и многих других, автор - постоянный читатель и\или писатель сайта падонкоф. Как может безграмотный автор учить кого то языкам?! Безграмотность (читай - невнимательность, плохая память, неспособность читать художественную литературу) проявится и в анализе языка программирования и при написании кода.
Жирные тролли процветают :)
Народ! Чувак отлично пишет! Не зацикливайтесь на мелочах :)
Masha - кто о чем пишет, то о том и думает. Автор видимо думает о прогах, а ты о дрочах и прыщах. Нападать на человека надо по теме, а не по факту прыщей на носу, или туалетной ленте на которой гениальный програмер записал свое озарение на толчке!
А тебе так слабо?
Вообще, я доктор наук, психолог, имею печатные работы, кучу благодарных клиентов, и ... отвратительно пишу без редактора, так как еще в школе не мог понять и усвоить граматику русского языка. Зато увлекаясь пайкой радиосхем, мог по памяти сочинить и нарисовать схему компьютерной приставки к телевизору "Синклер" :( И легко наизусь читаю лекции по сорок страниц :( так, что со своими выводами о людях СЕБЯ не сравнивай, - знаток :(
А мне понравилась статья,я бы еще хотела увидеть примеры программ на Пайтоне)
У меня тут есть немного https://github.com/adw0rd?tab=repositories , но в основном это для Django конечно, а не standalone. Могу привести любые примеры, главное понять что именно надо, пишите :-)
Спасибо Автору за труд!
Я давно заглядываю на сайт и сбольшим удовольствием просматриваю статьи. Сегодня решил написать свой первый комментарий. С большой благодарностью думаю о людях, которые находят в себе силы и возможности делиться опытом и знаниями с другими.
Пишите ещё! И не бойтесь ошибок. Помните, человеку дано право делать ошибки! Вспомните детство: как много было ошибок, но благодаря им мы научились быть лучше (конечно это справедливо для тех, кто это сделал). И сколько их ещё будет! Ошибку нужно исправить и двигаться дальше, не зацикливаться. От этого то мы и взрослеем в прямом и в переносном смысле слова.
И ещё, мне нравится реакиция Автора на замечания! Это пример для всех как нужно поступать в таких случаях. Человек, который самостоятельно освоил такие технологии заслуживает глубокого уважения. А тот, кто "имеет что сказать" --- вдвойне!
И напоследок: Интернет --- это не помойка, следите за своим языком, --- слово --- не воробей... Уважайте себя.
С уважением,
Ваш Читатель.
Оставьте свой комментарий