ФорумПрограммированиеPython → Введение в Python

Введение в Python

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 22 августа 2009 г. 16:43, спустя 1 час 43 минуты 53 секунды



    Оригинал статьи можно посмотреть у меня в блоге http://adw0rd.ru/2009/python-introduction/

    [h2]Введение[/h2]

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

    Он обладает такими возможностями, как модульность и объектно-ориентированное программирование, однако не обязывает использовать только ООП, вы также можете использовать процедурный подход.

    Его объектная модель поддерживает такие понятия, как полиморфизм, перегрузка операторов и множественное наследование, однако, учитывая простоту синтаксиса и типизации Python, ООП не вызывает сложностей в применении. При наличии соответствующего связующего программного кода программы на языке Python могут использовать механизм наследования от классов реализованных на C++, Java и C#.

    [h2]Основные факторы и преимущества этого языка[/h2]

    Многие компании во всем мире используют Python для разнообразных проектов, приведу краткий список этих компаний: NASA (научные вычисления), CERN, STSCI (Институт космического телескопа), NSA (шифрование и анализ разведданных), Apple, Google (в том числе и в поисковой системе), Яндекс, YouTube, BitTorrent (клиент peer-to-peer), Intel, Cisco, HP, Seagate, Nokia, Qualcomm, IBM, DreamWorks, Pixar (для анимационных фильмов) и многие другие организации во всем мире.

    [h3]Качество программного обеспечения[/h3]

    Код на языке Python более ясен и легко читается, что несомненно улучшает качество программного кода в сравнении с другими языками сценариев (вспомним Perl). В этом мы убедимся в следующих статьях, когда перейдем к практической части.

    [h3]Высокая скорость разработки[/h3]

    В сравнении с другими компилирующими языками программирования, такими как C, C++ и Java, Python значительно повышает производительность труда разработчика, так как эквивалентный код имеет в три и более раза меньший объем. Кроме того, программный код на языке Python запускается сразу же, минуя этапы компиляции и связывания.

    [h3]Переносимость программ[/h3]

    Стандартная реализация языка 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 и игровые консоли;
    * и многие другие…


    Более того, он имеет массу возможностей по созданию переносимых графических интерфейсов, программ доступа к базам данных, веб-приложений и т.д.

    [h3]Поддержка библиотек[/h3]

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

    К числу сторонних библиотек можно отнести:

    * NumPy - альтернатива Mathlab;
    * PyGame - разработка игр и анимации;
    * PIL - обработка графических изображений;
    * PyRo - управление роботом;
    * NLTK - анализировать фразы на естественном языке;
    * библиотеки для работы с последовательным портом и т.д.


    [h3]Интеграция компонентов[/h3]

    На сегодняшний день 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.

    [h3]Качество и поддержка ПО[/h3]

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


    Инструкция
    import this
    активизует пасхальное яйцо, которое отображает некоторые принципы проектирования, лежащие в основе языка.


    Давайте вспомним язык Perl, где каждый программист сочинял свой путь решения, после чего такой код было сложно понять другим программистам (в большинстве случаев и самому разработчику этого кода), а в нынешнее время самое главное это поддержка кода, а не быстрое его написание!

    [h2]Что можно делать с помощью Python?[/h2]

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

    [h3]Системное программирование[/h3]

    Встроенные в Python интерфейсы доступа к службам операционных систем делают его идеальным инструментом для создания переносимых программ и утилит системного администрирования. Программы на языке Python могут отыскивать файлы и каталоги, запускать другие программы, производить параллельные вычисления с использованием нескольких нескольких процессоров и потоков, и делать многое другое. Также поддерживает все типичные инструменты ОС: файлы, сокеты, каналы, процессы, многопоточную модель исполнения, поиск по шаблону с использование рег. выражений, аргументы ком. строки и много другое.

    Системные интерфейсы в Python созданы переносимыми, поэтому вам не надо изменять код под каждую ОС.

    [h3]Графический интерфейс[/h3]

    В состав Python входит стандартный ОО интерфейс к Tk GUI API, который называется Tkinter, позволяющий реализовывать переносимый графический интерфейс с внешним видом присущим операционной системе. Свободно распространяемое расширение PMW содержит дополнительные визуальные компоненты для набора Tkinter.

    Кроме того, существует прикладной интерфейс wxPython GUI API, основанный на библиотеке C++, который предлагает альтернативный набор инструментов. Инструменты PythonCard и Dabo, построены на основе wxPython и Tkinter. При выборе соответствующей библиотеки вы сможете использовать другие инструменты для построения графических интерфейсов, например: Qt, GTK, MFC и Swing.

    [h3]Веб-сценарии[/h3]

    Python поставляется со стандартными интернет-модулями, которые позволяют программам выполнять разнообразные сетевые операции. Сценарии могут производить взаимодействие через сокеты, извлекать данные полученные из html-форм; передавать файлы по протоколу FTP; обрабатывать файлы XML; передавать, принимать, создавать и производить разбор писем электронной почтой; производить взаимодействия по протоколам XML-RPC, SOAP, Telnet и т.д.

    С помощью пакета mod_python для Apache можно запускать сценарии на языке Python, также он поддерживает шаблоны механизма Python Server Pages.

    Система Jython обеспечивает бесшовную интеграцию Python/Java и поддерживает серверные апплеты, которые выполняются на стороне клиента.

    Помимо всего этого для Python существуют полноценные пакеты веб-разработки, такие как Django, Zope, TurboGears, Pylons и WebWare, предназначенные для быстрого создания полнофункциональных высококачественных веб-сайтов.

    [h3]Приложения баз данных[/h3]

    В Python имеется поддержка Sybase, Oracle, ODBC, MySQL, PostgreSQL, Informix, SQLite и многие другие. Также существует "переносимый прикладной программный интерфейс баз данных", предназначенный для доступа к БД SQL из сценариев Python, который унифицирует доступ к различным базам данных, что-то на подобие PDO для PHP.

    Стандартный модуль Pickle реализует простую систему хранения объектов, позволяющий программам сохранять и восстанавливать объекты Python в файлах или в специализированных для этого объектах. Также можно использовать систему ZODB, которая является полостью ОО базой данных. Существует и еще один инструмент под названием SQLObject, который отображает реляционные таблицы в модель классов языка Python.

    [h2]Python мощный[/h2]

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

    [h3]Динамическая типизация[/h3]

    В Python нет необходимости объявлять явно типы объектов, он сам следит за ними.

    [h3]Автоматическое управление памятью[/h3]

    Python автоматически распределяет память под объекты и освобождает ее (сборка мусора), когда объекты становятся ненужными.

    [h3]Модульное программирование[/h3]

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

    [h3]Встроенные типы объектов[/h3]

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

    [h3]Встроенные инструменты[/h3]

    Для работы со всеми этими встроенными типами данных у Python имеются средства, предназначенные для конкатенации, получения срезов, сортировка, отображение и многое другое.

    [h3]Библиотеки утилит[/h3]

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

    [h3]Утилиты сторонних разработчиков[/h3]

    Так как Python открытый, то для него делают очень много сторонних библиотек, которые решить внутренними средствами не возможно. В сети можно найти свободную реализацию поддержки COM, средств для работы с изображениями, распределенных объектов COBRA, XML, механизмов доступа к БД и многое другое.

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

    [h2]Python свободный[/h2]

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

    [h2]Python назван в честь Монти Пайтона (Monty Python)[/h2]

    Несмотря на то что на эмблеме Python изображена рептилия, правда в том, что создатель Python, Гвидо ван Россум, назвал свое детище в честь комедийного сериала "Летающий цирк Монти Пайтона", который транслировался по каналу BBC.

    Он большой поклонник этого сериала, как и многие программисты со всего мира! В связи с этим, традиционные имена переменных "foo" и "bar" часто заменены на "spam" и "egg". Также, конференции по языку Python обычно имеют именование "Испанская инквизиция".

    [h2]Какие преимущества у Python по сравнению с другим языком?[/h2]

    * Python имеет более широкие возможности, чем Tcl. Язык Python поддерживает "программирование в целом", что делает его применимым для разработки крупных систем.

    * Python имеет более четкий синтаксис и более простую архитектуру, чем Perl, что делает код более удобочитаемым и простым в сопровождении.

    * Python проще и удобнее, чем Java. Python - язык сценариев, а Java унаследовала сложный синтаксис от таких языков программирования, как C++, например.

    * Python проще и удобнее, чем C++, но не редко он не конкурировать с C++, поскольку будучи языком сценариев, Python предназначен для другого круга задач.

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

    * Python обладает динамическими характеристиками таких языков, как SmallTalk и Lisp, но имеет более простой и традиционный синтаксис.

    [h2]Резюме[/h2]

    Вот мы и закончили с введением в этот замечательный язык, однако теоретическая часть не окончена, в следующей статье расскажу про то как работает Python и PVM, также про альтернативные интерпретаторы на Java и .NET и для чего они нужны, и еще о многом другом.
    adw/0
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 20 августа 2009 г. 7:01, спустя 14 часов 17 минут 56 секунд

    ебать меня в глаза
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 августа 2009 г. 7:06, спустя 4 минуты 40 секунд


    ебать меня в глаза
    http://pyha.ru/forum/topic/3209.msg65744#msg65744
    Спустя 175 сек.
    Кароче убрал size=14 и size=11, list тоже убрал. Однако читать всеравно невозможно… рекомендую читать с блога :)
    adw/0
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 20 августа 2009 г. 7:23, спустя 16 минут 53 секунды

    мне кажется полноценные 3D игры на питоне не сделаешь
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 20 августа 2009 г. 7:40, спустя 16 минут 58 секунд


    мне кажется полноценные 3D игры на питоне не сделаешь
    не поверишь, делают
    Спустя 29 сек.
    питон прелестная вещь… а минусы питона почему не называешь?))
    такие как перезапуск веб сервера чтобы пересобрать egg кеш?
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 августа 2009 г. 7:45, спустя 4 минуты 58 секунд

    такие как перезапуск веб сервера чтобы пересобрать egg кеш?
    о веб-разработках будет позже :)

    ну еще минус - он медленнее чем C/C++, но и это решается, расскажу в следующих статьях
    adw/0
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 20 августа 2009 г. 7:47, спустя 2 минуты 29 секунд



    мне кажется полноценные 3D игры на питоне не сделаешь
    не поверишь, делают

    игры разные бывают, я имел ввиду такие как FarCry например


    такие как перезапуск веб сервера чтобы пересобрать egg кеш?
    о веб-разработках будет позже :)

    ну еще минус - он медленнее чем C/C++, но и это решается, расскажу в следующих статьях
    он даже медленнее чем C#
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 августа 2009 г. 7:48, спустя 1 минуту 11 секунд

    он даже медленнее чем C#
    пруфлинк
    adw/0
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 20 августа 2009 г. 7:49, спустя 1 минуту 1 секунду

    http://www.rsdn.ru/forum/philosophy/1186019.flat.aspx
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 августа 2009 г. 8:05, спустя 15 минут 24 секунды


    http://www.rsdn.ru/forum/philosophy/1186019.flat.aspx
    устал читать, выжимку можешь сделать с фактами?
    adw/0
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 20 августа 2009 г. 8:09, спустя 3 минуты 54 секунды

    а можно пример игр на питоне? очень заинтересовал язык… :)
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 20 августа 2009 г. 8:09, спустя 42 секунды

    4)C# исполняется быстрее.

    Vlad2> Не… не быстрее… а на много быстрее. Статическая типизация и компиляция рулят.


    а фактов нет


    надо будет на досуге провести свой личный тест…

    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 августа 2009 г. 8:12, спустя 2 минуты 50 секунд

    Frozzeg, я просто не работал с шарпом, и не в курсе был какая у него типизация и т.д., поэтому не включил его в список по аналогии с C/C++
    Спустя 83 сек.

    а можно пример игр на питоне? очень заинтересовал язык… :)
    я как-то давно играл на PDA сонерике, на нем еще и на C++ можно было писать

    http://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_Python
    adw/0
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 20 августа 2009 г. 8:16, спустя 3 минуты 43 секунды


    а можно пример игр на питоне?
    лично я одну чепуху пока находил…
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 20 августа 2009 г. 8:17, спустя 58 секунд

    adw0rd, плюсы то все просто замечательные :) А минусов нет, да? ;)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!