Самоучитель
Python — это язык программирования, который одновременно сочетает в себе простоту и невероятную силу. Его синтаксис прост и логичен, а возможности поистине огромны. С помощью Python можно как автоматизировать и облегчить свои повседневные задачи, так и запускать космические корабли в космос. Это не преувеличение, ведь его действительно используют даже в NASA.
Из‑за простого и логичного синтаксиса, динамической типизации, а также большого сообщества, Python прекрасно подходит для изучения начинающими программистами. А библиотеки, как встроенные, так и сторонние, позволят развиваться новичкам в любой сфере. Обработка и анализ данных, веб-сайты, сетевые приложения, искусственный интеллект, блокчейн, компьютерное зрение — все эти «модные» направления доступны с Python практически из коробки.
Как бы банально это не звучало, но для того, чтобы научится программировать и стать программистом нужно начать писать программы. И, если вы только начинаете программировать, не думайте об области, в которой вы хотите работать. Любое из направлений требуют базовых знаний и без этих базовых знаний ничего не получится.
Что такое Python/Питон?
Конечно, научится программированию на Python, как и на любом другом языке не просто. Потребуется терпение, желание и самое главное упорство. Но с Python это легче и веселее, чем с каким‑либо другим языком программирования. Попробуйте потратить время на изучение, это того стоит.
Для того, чтобы изучение программирования на Python было простым и эффективным, мы создали специальную среду обучения. В ней мы даем теорию небольшими порциями, а для закрепления полученных знаний придётся писать программы. Эти программы проверяет наш специальный робот. Он же указывает на ошибки и делает подсказки для их исправления. То есть обратную связь вы получаете практически мгновенно.
Устанавливать ничего не нужно, все работает прямо из браузера, а программы хранятся в облаке. Так что вы сможете заниматься в любое время и в любом месте. Главное, чтобы был интернет. Попробуйте, это отличный способ начать программировать. Для того, чтобы попробовать, как это все работает, нужно зарегистрироваться.
Ну а если вдруг вы не хотите регистрироваться, придется установить Python на компьютер. О том, как это сделать, написано в следующей главе.
Хотите выучить Python на практике?
Теория и практические задачи для закрепления на Python для начинающих. Быстрая проверка, подсказки к ошибкам на русском языке. От простого к сложному. Работает без установки в любом современном браузере.
Источник: letpy.com
Язык программирования Python: особенности и перспективы
Сегодня создано большое количество языков программирования и особое место среди них занимает Python. Он используется сегодня в различных сферах. Свои приложения на Python разрабатывают компании разного уровня. В этой статье мы расскажем об истоках, развитии, особенностях, а также перспективах этого языка программирования.
Что такое Python и почему вы захотите его изучить?
Немного истории
Разработка Python началась еще в 80-е годы ХХ столетия. Именно тогда у Гвидо ван Россума появилась идея о создании совершенно нового языка программирования, который стал бы преемником ABC и мог бы работать с операционной системой Амеба.
Гвидо ван Россум
Стоит отметить, что вплоть до 2018 года, автор принимал активное участие в развитии Python. Первая предварительная версия появилась в 1991 году. Уже в 1994 году сформировался основной форум Python comp.lang.python.
Что касается Python 1.0, эта версия увидела свет в 1994 году. По мере развития, в язык добавлялись новые функции, которые привлекали все больше разработчиков. Ежегодно в язык вносились значимые дополнения, которые выпускались с новыми версиями. Последняя опубликована в октябре 2020 года.
Итак, Python – это язык программирования с достаточно длительной историей. Причем по данным StackOverflow (известного англоязычного коммьюнити разработчиков), этот язык является самым быстрорастущим несмотря на то, что выпущен он был более 20 лет назад.
В чем заключаются основные особенности языка Python
Основной особенностью данного языка программирования является то, что его достаточно просто понять и изучить. Причем сделать это могут даже те, кто никогда раньше не сталкивался с программированием. А тем, кто уже имеет опыт написания приложения на других языках, изучение Python и вовсе не составит никакого труда.
Одним из важнейших отличий этого языка от Java или C заключается в том, что для написания приложений здесь используется меньше кода. То есть написать свое первое приложение ученик сможет намного быстрее.
Еще одна особенность заключается в том, что у Python есть множество библиотек, с помощью которых достичь своих целей в программировании можно намного быстрее. Например, Pygame позволяет написать игры и мультимедийные приложения. Для работы с bigdata используется библиотека Pandas. Django применяется для серверной части при разработке различных приложений.
Python используется в работе крупных компаний. Например, этот язык применяется для анализа данных и создания рекомендаций в известных розничных онлайн сетях Amazon и Spotify. Walt Disney использует Python для создания анимаций.
Такие известные социальные сети и онлайн стрим площадки как Instagram и Youtube целиком написаны на Python. Наконец, язык применяется NASA для автоматизации процессов WAS. А теперь давайте посмотрим, в каких сферах применяется данный язык разработки. Используется Python и АНБ США для шифрования и анализа информации.
Веб приложения
Это одна из сфер применения языка Python. Для веб-разработки используются различные фреймворки. Наиболее популярным является Django. Также, с помощью этого языка можно создавать свои собственные сайты, для чего применяется целый набор движков. А для сбора информации в интернете применяются различные парсеры, написанные на Python С их помощью, к примеру, можно проанализировать сайты конкурентов.
Программы
Python используется для написания широкого перечня программ, создаваемых для различных целей. Например, на этом языке написан редактор для создания трехмерной графики Blender. Также, с помощью Python создан BitTorrent.
Мобильные приложения
Это одно из наиболее популярных сегодня направлений. Мобильные приложения буквально захватили умы многих разработчиков и пользуются высоким спросом. Однако если рассматривать именно этот сегмент, здесь Python несколько уступает позиции языку Java. Для iOS (мобильные устройства компании Apple) используются такие языки, как Swift или Objective-C. Python приходит на помощь тогда, когда необходимо написать серверную часть приложения.
Игры
Игровая индустрия зародилась уже давно и сегодня это много миллиардный бизнес. Многие игры либо полностью, либо частично написаны с помощью языка Python. Например, этот язык разработчик применялся при создании таких шедевров, как Battlefield 2 или Civilization IV. Всем известная игра Мир Танков или World of Tanks также использует Python.
Sid Meier’s Civilization IV
Помимо всего вышеперечисленного, язык также используется при создании различных скриптов и встроенных систем. То есть, как можно увидеть из всего вышеперечисленного, Python имеет широкую сферу применения, которая не ограничивается какой-то одной областью.
Источник: progkids.com
Язык Python — описание, синтаксис, плюсы и минусы
P ython — высокоуровневый язык программирования общего назначения. Он имеет минималистичный синтаксис и направлен на повышение читаемости кода (и в целом на повышение производительности разработчика).
В статье рассмотрим основные особенности языка, его плюсы и минусы, базовый синтаксис + разберём простой пример кода.
О языке
По-русски Python произносится как — «пайтон», но более распространенная версия произношения — «питон». Язык поддерживает несколько парадигм программирования: объектно-ориентированное, функциональное, структурное, императивное и аспектно-ориентированное.
Основная реализация языка Python — CPython . Написана на C .
История создания
Разработку Python начал Гвидо ван Россум в декабре 1989 года. Для ОС Amoeba требовался расширяемый скриптовый язык. На досуге, Гвидо начал писать Python, позаимствовав некоторые наработки из языка ABC.
Версия Python 2.0 была выпущена 16 октября 2000 г., а первая обратно-несовместимая версия Python 3.0 — 3 декабря 2008 г.
Историю релизов Python можно посмотреть тут .
Какие задачи удобно решать на Python
Основной упор в Python делается на скорости написания кода (а не на скорости выполнения кода, как например в языках С и C++). Поэтому в первую очередь Python удобно использовать там, где нужно быстро написать что-то работающее.
Все чаще Python используется для анализа данных, как в науке, так и коммерческой сфере. Этому способствует простота языка и большое разнообразие открытых библиотек.
Другая область применения, для которой хорош Питон — системное администрирование и DevOps. На это есть как минимум 3 причины:
- благодаря своей простоте, системному администратору не так сложно выучить этот язык и начать им пользоваться;
- огромный выбор библиотек;
- python входит в состав большинства дистрибутивов Linux.
О других сферах применения Python читайте тут:
Типизация
Python является языком с полной динамической типизацией и автоматическим управлением памятью. Динамическая типизация означает, что тип переменной определяется только во время исполнения.
С одной стороны, динамическая типизация упрощает написание программ. Но с другой, имеет ряд недостатков — повышается риск ошибиться с типами и снижается производительность программы.
В «Питоне» реализованы встроенные типы, например:
- булевый тип;
- строка;
- целое число произвольной точности;
- число с плавающей запятой;
- комплексное число.
Также есть и готовые коллекции:
- списки;
- кортежи (неизменяемые списки);
- словари;
- множества.
Добавить новый тип можно написав свой класс или определив новый тип в модуле расширения.
Подробнее о типах данных в Python:
Производительность
По производительности Python относительно медленный язык (по сравнению с C, Go, Java). Его скорость выполнения схожа с другими интерпретируемыми языками (PHP, Ruby). Однако возможность компиляции python-кода в байт-код позволяет добиться большей производительности.
Основные причины, из-за которых Python «медленный»:
- GIL (глобальная блокировка интерпретатора).
- Динамическая типизация.
- Python это интерпретируемый, а не компилируемый язык.
Несмотря на это, в большинстве задач гораздо важнее быстро получить результат, нежели ускорить выполнение программы. Особенно это важно для бизнеса или стартапа, где критически важно быстро выпустить продукт в production и начать зарабатывать.
Если для задачи критична производительность, используйте последнюю версию Python. Или присмотритесь к PyPy.
GIL
Global Interpreter Lock — это глобальная блокировка интерпретатора Python. GIL накладывает ограничение на потоки — нельзя использовать несколько процессоров одновременно. Тем самым GIL помогает избежать конфликтов при одновременном обращении разных потоков к одним и тем же участкам памяти.
Многие разработчики против GIL в Python-е, однако создатель проекта Гвидо ван Россум заявляет, что GIL не так уж и плох, и убирать его из CPython`а он не планирует.
Плюсы и минусы Python
- низкий порог вхождения;
- язык широкого применения;
- минималистичный синтаксис;
- кроссплатформенность;
- открытый исходный код интерпретатора CPython;
- наличие дружелюбного, отзывчивого сообщества;
- поддержка многих IDE;
- огромное количество библиотек;
- входит в поставку большинства дистрибутивов Linux.
- низкая производительность;
- отсутствие статической типизации.
Синтаксис
Программный код на Python организовывается в функции и классы. Они объединяются в модули, а модули могут быть объединены в пакеты.
Синтаксис Python прост и лаконичен, что делает его удобным для изучения.
Отличительная черта языка — использование отступов для выделения блоков кода и управляющих структур
В отличие от других языков программирования, отступы в Python напрямую влияют на вложенность выражений. Именно эта особенность положительно влияет на читаемость Python-кода.
Пример кода
Простой пример кода — классический «Hello, World!»:
Попробуем разобрать более сложный код. Дано: 10 рандомных чисел. Необходимо отсортировать их в порядке возрастания.
from random import randint def get_numbers(count): numbers = [] for i in range(count): numbers.append(randint(1, 99)) return numbers my_numbers = get_numbers(10) my_numbers.sort() print(my_numbers)
- В первой строке мы импортируем функцию randint из модуля random . Эта функция нужна нам для генерации случайных целых чисел (модуль random входит в стандартную библиотеку Python, отдельно его устанавливать не нужно).
- get_numbers — это функция. Об этом говорит инструкция def В круглых скобках находится аргумент этой функции — count .
- Инструкцией get_numbers(10) мы вызываем функцию. Аргумент count теперь равен 10. Count в нашем случае это количество чисел, которое мы хотим сгенерировать.
- Инструкция for i in range(count) — это цикл (перебор). В нашем случае от 0 до 9.
- randint(1, 99) вернет рандомное (случайное) число от 1 до 99.
- Метод append добавит рандомное число в список numbers .
- И так 10 раз.
- Когда цикл закончится, функция вернет список из 10-ти рандомных чисел. Этот список мы присвоим переменной my_numbers .
- Далее вызовем метод sort который отсортирует список по возрастанию.
- А функция print выведет наш отсортированный список на экран (в консоль).
Результат выполнения данного скрипта выглядит следующим образом:
[20, 27, 29, 36, 53, 74, 75, 81, 87, 93]
В данной статье мы рассмотрели лишь верхушку айсберга под названием Python. Изучив этот язык вы удивитесь, насколько просто и лаконично может выглядеть код и как просто его писать.
Источник: pythonchik.ru
Python – особенности языка и вся информация для начинающих
Python несколько лет входит в ТОП популярных языков мира благодаря своей простоте и универсальности. Важная его особенность – низкий порог входа, благодаря чему язык могут быстро выучить люди, которые ничего не знают о программировании. Мы расскажем о базовых принципах Python, стандартных библиотеках, с которыми он работает, его отличии от the java и JS, производительности, плюсах и минусах. В конце статьи вас ждёт небольшой python FAQ, где вы узнаете о полезных материалах для самообучения и тонкостях языка.
История Python
В каких задачах удобен язык
Легко ли учить язык
Типизация Python
Производительность языка
Примеры кода на Python
Плюсы и минусы Python
Альтернативы
Перспективы языка и сколько получают разработчики
Что почитать по теме
Подведём итоги
О языке
Язык Python – универсальный язык, который является одним из наиболее популярных в последние годы. Он отличается структурированным программным кодом, простым синтаксисом, поэтому ему так любят новички в программировании. На нём ведут разработку сайтов и приложений.
Разработчики создали для него много библиотек – фреймворков, с помощью которых можно разнообразить код под разные сайты или приложения. Язык программирования python 3 развивается, постоянно появляются обновления.
Язык отличают от остальных интерпретаторов python, благодаря которым работают стандарты кодировки ISO, ANSI и т.п.
История Python
Язык программирования был разработан в 80-е годы программистом Гвидо ван Россумом в Нидерландах. Сначала разработчик планировал сделать Python объектно-ориентированным языком, то есть для написания скриптов. В 1991 году ван Россум представил исходный код всему миру.
Язык программирования получил популярность благодаря удачному месту презентации, простому коду и широким возможностям. Вскоре разработчик создал портал PEP, в котором программисты постоянно обсуждают развитие и улучшение языка.
В 2008 году Гвидо выпустил обновление python 3.0. Она отличается от предыдущей версии python 2.7 меньшим количеством ошибок в архитектуре ядра. Также обновлённая версия отлично совместима с предыдущими.
В каких задачах удобен язык
Python 3000 используются в веб-разработке, автоматизации процессов и data science. Для веб-разработки python software выпускает различные фреймворки, которые помогают упростить написание кода серверной части. Эти библиотеки используются для быстрого создания базовой логики бэкенда и включают в себя также работу с базами данных.
В последнее время направление Data Science развивается стремительными темпами. В него входит машинное обучение, анализ данных и визуализация. Это всё используется для рекомендательных сервисов, систем распознавания лиц, бизнеса, которому нужно проанализировать свою аудиторию и наглядно показать результат.
Ещё одно применение языка – автоматизация процессов. На нём пишут скрипты, которые помогают разработчикам упростить работу, заменяя ручной труд автоматическим.
Легко ли учить язык
Язык быстро и легко учится людьми без опыта программирования благодаря своей логичности, простоте. У Питона простой синтаксис и правила. Из-за того, что этот язык высокоуровневый, разработчикам не нужно думать, как кодировать. Они думают над тем, что кодировать. Также Питон очень похож на английский язык, поэтому прочитать и запомнить его синтаксис просто.
Типизация Python
В Питоне все данные являются объектами. Их могут создавать разработчики сами, либо они уже изначально встроены в сам язык. Объект содержит значения и операции для них. Программа на этом языке программирования выглядит следующим образом:
- во всех версиях питона программа состоит из модулей;
- модуль – набор инструкций;
- инструкции состоят из выражений;
- с помощью выражений создают и обрабатывают объекты.
Объекты бывают разных типов. И язык Python поддерживает динамическую типизацию.
То есть он определяет тип данных непосредственно во время выполнения кода. У каждого типа свои особенности и ограничения, поэтому важно классифицировать его, чтобы программа работала корректно. Классический пример написания кода с динамической типизацией:
a = 1 print(type(a)) a = ‘one’ print(type(a)) a = print(type(a))
Динамическая типизация упрощает изучение языка, позволяет абстрагироваться от алгоритмов и создавать коллекции из элементов разных типов.
Типы данных можно поделить на ссылочные (списки, классы, словари, кортежи, функции), атомарные (строки и числа), последовательности, файлы.
Синтаксис
В Питоне for windows нет операторных скобок, которые используются в большинстве других языков. Блоки здесь выделяют отступами. Однострочные комментарии обозначаются #, а многострочные «»». Значение переменной присваивается знаком равенства =. Знак сравнения — ==, увеличения значения — +=, уменьшение переменной — -+.
Производительность языка
Среди популярных высокоуровневых языков программирования Python один из медленных. Маленькая производительность обусловлена глобальной блокировкой интерпретатора, динамической типизацией.
Чтобы провести python enhancement и повысить производительность языка, рекомендуем подобрать подходящую структуру данных, оптимизировать цикл и строки, максимально использовать вычисление ifи понимание списка.
Примеры кода на Python
Предлагаем ознакомиться с несколькими примерами кода на этом языке программирования.
Вычисление времени выполнения функции или программы:
import time start_time= time.time() def fun(): a=2 b=3 c=a+b end_time= time.time() fun() timetaken = end_time — start_time print(«Your program takes: «, timetaken) # 0.0345
Проверить повторяющиеся значения в списке можно следующим образом:
def check_duplicate(lst): return len(lst) != len(set(lst)) check_duplicate([1,2,3,4,5,4,6]) # True check_duplicate([1,2,3]) # False check_duplicate([1,2,3,4,9]) # False
Пример с сортировкой списка, которую часто используют разработчики in python:
my_list = [«leaf», «cherry», «fish»] my_list1 = [«D»,»C»,»B»,»A»] my_list2 = [1,2,3,4,5] my_list.sort() # [‘cherry’, ‘fish’, ‘leaf’] my_list1.sort() # [‘A’, ‘B’, ‘C’, ‘D’] print(sorted(my_list2, reverse=True)) # [5, 4, 3, 2, 1]
Следующий код покажет, сколько памяти занимает выбранная переменная:
import sys var1=»Python» var2=100 var3=True print(sys.getsizeof(var1)) #55 print(sys.getsizeof(var2)) #28 print(sys.getsizeof(var3)) #28
Плюсы и минусы Python
Среди плюсов языка:
- подойдёт в качестве первого языка программирования;
- python поддерживают почти все операционные системы и платформы;
- много фреймворков;
- простой синтаксис;
- поддерживает ООП.
- низкая производительность;
- не очень подходит для мобильной разработки;
- из-за динамической типизации можно наделать много ошибок.
Альтернативы
У Питона есть два основных конкурента – Java и JavaScript. Каждый из них имеет свои особенности, преимущества и недостатки. И также входят в список самых популярных языков.
Сравнение с Java
Языки поддерживают ООП и кроссплатформенность. Но отличаются:
- Типизацией. У Джавы она статическая, и типы переменных считывают во время компиляции.
- Скоростью, которая у Java в 10 раз выше.
- Синтаксисом и читаемостью. У Java он строгий и сложный, в нём много элементов.
- Применением. Java используется для промышленных программ и приложений на мобильные платформы. Python – машинное обучение, автоматизация и веб-разработка.
Сравнение с JavaScript
От JavaScript Питон отличается:
- Типами исходных кодов. В Питоне объекты строго разделены по типам, а в JavaScript больше свободы, из-за чего часто возникают ошибки.
- Скоростью. У JavaScript она гораздо выше.
- Применением. JavaScript зачастую используется только в веб-разработке, когда как Python software foundation вышел далеко за эти границы.
- Универсальностью. Питон больше подходит только для бэкенд-разработки, а JS идеален для Frontend и Backend.
Перспективы языка и сколько получают разработчики
Разработчики Python уровня Junior получают в районе 50 000 – 80 000 руб. Зарплата Middle – 100 000 – 150 000 руб. Senior будут получать свыше 200 000 руб. Уровень зарплат зависит от региона, обязанностей разработчика.
Согласно индексу TIOBE, который определяет популярность языков программирования согласно поисковым запросам, Python несколько лет входит в тройку популярных. Благодаря широкому развитию Data Science, Питон будет ещё несколько лет среди самых востребованных языков мира.
В России разработчиков не так много, поэтому на рынке всегда более 1 500 вакансий, которые ориентированы на специалистов с разным уровнем подготовки и знаний.
Что почитать по теме
Чтобы постоянно быть в курсе enhancement proposals, мы предлагаем список полезных ресурсов с каналами, форумами, видеолекциями и т.п.
Список сайтов для изучения Питон:
- Code Academy – бесплатный портал с уроками по Python;
- Python Class от Google – электронный учебник для опытных разработчиков;
- Python.org с Python 3 documentation – официальные документы по языку;
- PythonChallenge – портал с уроками и задачами.
В этих блогах вы найдёте полезную и актуальную информацию:
- Planet Python – один из самых популярных сайтов, где разработчики делятся своими мыслями, проблемами, пишут статьи и просто общаются.
- Mouse vs. Python – портал с постоянно обновляющейся информацией и новостями.
- Doug Hellmann – блог одного из ведущих мировых разработчиков.
- PyBloggers – социальная сеть разработчиков Питон.
- Pythonist.ru выкладывает ссылки на обучающие статьи, обзоры книг, предлагает задачи по написанию кода.
- PythonistPro – англоязычный канал с ссылками на полезные статьи, книги и обзоры.
- Python Academy в своих постах публикует информацию о модулях, функциях или приёмах.
- Python Resources с обучающими ресурсами на английском языке.
Для изучения Python можно смотреть видео с каналов на YouTube:
- Хауди Хо™ – Просто о мире IT! – много уроков по Питону.
- Django School – всё об этом фреймворке.
- Egoroff channel – опыт разработчика Python.
- Канал разработчика Олега Молчанова о Питоне.
FAQ
Где можно выучить Python?
Вы можете самостоятельно изучать его по литературе и специальным тематическим сайтам. Также в интернете есть много бесплатных и платных онлайн-курсов, где за период 6 – 12 месяцев вы сможете получить базовые знания для того, чтобы устроиться на первую работу.
Какие soft skills пригодятся в работе?
Разработчик должен уметь общаться с людьми, работать в команде, управлять своим временем, стремиться к профессиональному росту, быть ответственным и усидчивым.
Подведём итоги
Если вас заинтересовала перспектива изучения Python, то вы должны знать, что:
- язык универсальный и используется для машинного обучения, анализа, визуализации, создания сайтов и приложений;
- он появился в 80-е годы;
- Python 3.0 – актуальная версия языка;
- язык легко выучить благодаря простому синтаксису и динамичной типизации данных;
- Python имеет слабую производительность и редко используется для создания мобильных приложений;
- основные конкуренты – JS, Java, C;
- разработчики без опыта могут получать от 50 000 руб., поскольку специальность востребована, и на российском рынке не хватает программистов.
Источник: www.sravni.ru
Что такое Python и с чем его едят
Python — объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход. Python поддерживает множественное наследование, переопределение инфиксных операторов, причем можно переопределить операцию как для левого операнда, так и для правого; в версии 2.1 есть полное переопределение операторов сравнения (механизм rich comparison для объектов, поддерживающих частичное упорядочивание, например, матриц).
В Python имеются исключения и механизм их перехвата; таким образом программист может построить правильную обработку ошибок и создать надежную программу. Встроенные механизмы интроспекции позволяют опрашивать интерфейсы объектов во время выполнения программы. Например, можно узнать количество и имена параметров функции; эту интроспекцию использует Zope, чтобы подготовить правильный список параметров функции при вызове ее из web.
Из современных языков Python можно сравнить в первую очередь с Java и Perl. Python выполняет все обещания, которые дала, но не выполнила Java. Python очень хорошо переносим. Он работает на всех платформах, на которых есть Java, и еще на многих. Мало найдется таких платформ, на которые Python не перенесен.
Я не говорю про UNIX и Windows, конечно — с точки зрения переносимости куда интереснее такие платформы как Mac, Amiga, Palm, RiscOS, AS/400 и многие другие. Для особых любителей Java есть Jython. Он состоит из двух частей: во-первых, это интерпретатор Pyhon, написанный на Java, а во-вторых это компилятор Python в байт-код Java.
В сравнении с Perl — Python как язык ему совершенно равномощен, но избавлен от великого множества неприятностей и неудобств, присущих Perl. Python обладает богатой стандартной библиотекой, плюс великим множеством модулей, доступных в Интернете. Для пользователей Windows есть пакет win32, из которого доступны практически все функции Windows API, DDE, COM.
Существует Русскоязычная Группа Пользователей Python и Zope. Сайт группы расположен по адресу http://zope.net.ru/.
Основные структуры управления
Python — вполне обычный, можно сказать, «традиционный» язык программирования. Все привычные конструкции в языке есть — условный оператор if, циклы for и while, функции, классы, модули, пакеты (иерархические совокупности модулей). Нет цикла do-while и оператора case.
Из менее традиционных операторов — возбуждение исключений raise и их перехват try-except-else и try-finally. Впрочем, исключения начинают занимать свое место и в других современных языках, так что чем-то революционным их назвать нельзя.
Для многих становится неожиданным, что в Питоне блочная структура обозначается отступами, а не словами begin/end (или скобками). К этому, однако, быстро привыкаешь, и это становится очень удобно.
Модули — структурирование пространства имен
При создании больших программ или библиотек большим количеством людей встает проблема коллизий имен. Питон решает эту проблему так же, как и большинство современных языков — структурированием пространства имен с помощью иерархически организованных модулей.
В Питоне 3 пространства имен: встроенное пространство имен (им можно управлять с помощью модуля доступа к интерпретатору sys), локальное пространство функции, и глобальное пространство модуля. (Объектно-ориентированное программирование создает дополнительные пространства классов и экземпляров классов, об этом ниже). Каждое пространство имен — это список отображений имени в значение.
Модуль — это совокупность описаний, объединенных в общее пространство имен — глобальное пространство модуля. Модули подключаются к программе (или другому модулю) с помощью оператора import, после которого имена из пространства имен модуля становятся доступными.
Какие именно имена становятся доступны, определяет оператор import: вариант import module делает доступным ровно одно имя — имя модуля module, но зато через это имя можно использовать все глобальные имена модуля в виде module.name. В варианте from module import name из модуля импортируется указанное имя или список имен. В варианте from module import * из модуля импортируются все имена. Хотя автор модуля может ограничить этот список, а в отсутствии такого ограничения не импортируются имена, начинающиеся с подчеркивания — считается, что это внутренние имена модуля, не входящие в его публичный интерфейс.
Модуль может быть написан на Python, C или C++. Модули, написанные на Питоне, позволяют создавать новые классы (об объектно-ориентированном программировании речь будет идти ниже). Модули написанные на C и C++ позволяют создавать новые типы данных. Модули, написанные на C/C++ могут быть встроенные (builtin) или подгружаемые (DLL в Windows, разделяемые библиотеки в тех вариантах UNIX, в которых формат выполняемых файлов ELF).
Модуль на Питоне — это текстовый файл с расширением .py, содержащий описания переменных, функций и классов, плюс выполняемый код, который позволяет инициализировать модуль. Этот код выполняется при первом импорте модуля, после чего интерпретатор запоминает, что модуль уже проимпортирован и проинициализирован, и при последующих импортах этого же модуля код инициализации не выполняется.
Модули можно объединять в древовидные иерархии. Например, пакет XML содержит в себе пакеты DOM, SAX, Parsers (и другие, в зависимости от реализации). В результате можно проимпортировать PyExpat командой import xml.parsers.expat, тогда команды этого модуля будут доступны как xml.parsers.expat.ParserCreate, а можно проимпортировать его же командой from xml.parsers import expat, тогда команды этого модуля будут доступны как expat.ParserCreate. Или сразу from xml.parsers.expat import ParserCreate!
Изменяемые и неизменяемые объекты; адресная арифметика и ссылки
Объекты в Питоне бывают двух разновидностей — изменяемые и неизменяемые. Списки, например — объекты изменяемые, их содержимое и длину можно менять. Поскольку ключами словарей могут быть только неизменяемые объекты, в Питоне есть специальный тип неизменяемых списков — кортежи. Числа, естественно, объекты неизменяемые.
Также неизменяемыми являются строки, в отличии от многих других языков программирования. Хотя классы, написанные программистами, порождают изменяемые объекты, у программиста есть возможность написать класс, экземпляры которого могут быть ключами словаря.
Адресной арифметики в Питоне нет. Вообще. Поэтому разименовать нулевой указатель просто невозможно. Ссылки (указатели) в Питоне есть, но манипулирование ими осуществляется прозрачно для программиста.
В действительности все переменные в Питоне являются ссылками на объекты; поэтому, например, запись a = b означает «в переменную a скопировать ссылку из переменной b «. Также списки и словари хранят не объекты, а ссылки на объекты. Присваивание и разыменование ссылок производится автоматически.
Каждый объект в Питоне хранит счетчик ссылок, и при таком копировании ссылки этот счетчик увеличивается. Счетчик же ссылок того объекта, на который переменная a указывала раньше — уменьшается. Когда счетчик достигает 0, объект считается неиспользуемым, для него вызывается деструктор (если это экземпляр класса с деструктором), и память объекта освобождается.
Такой механизм называется «синхронной сборкой мусора со счетчиком ссылок». Помимо него, в Питоне есть асинхронный сборщик мусора, достоинство которого в том, что он умеет распознавать циклические ссылки и очищать объекты, на которые нет других ссылок (не из цикла). (Пример циклических ссылок: l=[]; l.append(l))
Рассмотрим поподробнее питоновские ссылки. Создадим список и присвоим его (на самом деле присвоим ссылку на него) в переменную a : a = [21, 12, «str»]. Теперь присвоим ссылку из a в переменную b : a = b . Изменим список, на который ссылается a , скажем, добавим в него содержимое другого списка: a += [2000]. На какой список ссылается переменная b ? На тот же, что и a — на список из 4 элементов.
Происходит это потому, что b все еще хранит ссылку на тот же список, что и a . А теперь присвоим в a новый список: a = [12, 21]. Что теперь будет в b ? А все тот же список из 4 элементов. Присваивание в a разорвало связь между a и b . В переменной a теперь ссылка на новый список, а в переменной b все та же ссылка на тот же список.
Если a — переменная, хранящая ссылку на список, и присваивание b = a копирует только ссылку на тот же список, то можно ли скопировать сам список? Короткий ответ — да, можно. Но не все так просто. Ведь и сам список хранит не объекты, а ссылки на объекты. Должны ли копироваться эти ссылки или должны быть продублированы и сами объекты?
Питон дает два ответа на этот вопрос: можно сделать и так, и эдак. Первый вариант копирования называется «поверхностным», второй — «глубоким» копированием. Глубокое копирование учитывает циклические ссылки. Классы, написанные программистом, могут определять методы, участвующие в копировании, тем самым «помогая» процессу копирования, для того чтобы не включать в копирование лишней информации.
Манипуляции с неизменяемыми объектами осуществляются путем создания новых объектов. Например, если в строке надо заменить символ, исходная строка разбивается на две подстроки, и из них (плюс новый символ) создается новая строка. Если в переменной a ссылка на цело число, то в результате операции a += 1 в a окажется ссылка на новое число.
11.2006 | ||
Источник: www.interface.ru |