В этой подборке мы собрали самые полезные книги о языке программирования Python, которые помогут в изучении как начинающим, так и опытным программистам.
Здесь вы найдете материалы для создания приложений, а также учебные пособия, которые помогут вам ознакомиться с инструментарием, освоить базы данных и повысить свои профессиональные навыки.
Пособие представляет собой отличное и признанное во всем мире введение в язык Python. Она быстро научит вас писать эффективный высококачественный код. Подойдёт как начинающим программистам, так и тем, у кого уже есть опыт использования других языков. Помимо теории в книге есть тесты, упражнения и полезные иллюстрации - всё, что нужно для изучения Python 2 и 3. Кроме того, вы познакомитесь с некоторыми продвинутыми фичами языка, которые освоены еще не многими специалистами.
Python является мультипарадигменным кроссплатформенным языком программирования, который в последнее время стал особенно популярен на Западе и в таких крупных компаниях, как Google, Apple и Microsoft. Благодаря своему минималистичному синтаксису и мощному ядру он является одним из наиболее производительных и хорошо читаемых ЯП в мире.
Прочитав эту книгу, вы быстро и в увлекательной форме изучите основы языка, затем перейдете к обработке исключений, веб-разработке, работе с SQL, обработке данных и Google App Engine. Также вы узнаете, как писать приложения под Android и многое другое о силе, которую дарует вам Python.
Еще одна признанная книга по Python, в которой вы найдёте 52 специально подобранных упражнения для изучения языка. Разобрав их, вы поймёте, как устроен язык, как правильно писать программы и как исправлять свои собственные ошибки. Рассматриваются следующие темы:
Эта книга предназначена для начинающих изучать программирование. В ней используется весьма стандартный подход к обучению, но нестандартный язык 🙂 Стоит отметить, что это скорее книга об основах программирования, чем о Python.
Книга «Программирование на Python для начинающих» - отличный вариант для старта. Она является подробным руководством, написанным специально для новичков, желающих освоить данный язык. Познакомившись с основами, вы перейдете к объектно-ориентированному программированию и созданию CGI-сценариев для обработки данных веб-форм, научитесь создавать графические приложения с оконным интерфейсом и распространять их на другие устройства.
С помощью данного учебника вы сможете пройти все ступени от установки интерпретатора до запуска и отладки полноценных приложений.
«Python Crash Course» - это емкое повествование о языке Python. В первой половине книги вы познакомитесь с основными понятиями языка, такими как списки, словари, классы и циклы, и научитесь писать чистый и хорошо читаемый код. Кроме того, вы узнаете, как тестировать свои программы. Во второй половине книги вам будет предложено применить знания на практике, написав 3 проекта: аркадную игру наподобие Space Invaders, приложение для визуализации данных и простое веб-приложение.
Это очень удобная карманная шпаргалка, созданная для Python 3.4 и 2.7. В ней вы найдёте самую необходимую информацию по различным аспектам языка. Затронутые темы:
Книга для изучения Python с кучей практических примеров.
Практические примеры можно почерпнуть и в нашей рубрике . Например, читайте наше по самостоятельной реализации функции zip.
Цель данной книги - познакомить читателя с популярными инструментами и принятыми в open source сообществе различными рекомендациями по написанию кода. Основы языка Python в этой книге не рассматриваются, ведь она совсем не про это.
Первая часть книги содержит описание различных текстовых редакторов и сред разработки, которые можно использовать для написания Python-программ, а также множества видов интерпретаторов для различных систем. Во второй части книги рассказывается о принятом в сообществе, работающем с открытым исходным кодом, стиле написания кода. Третья часть книги содержит краткий обзор множества библиотек для Python, которые используются в большинстве open source проектов.
Главное отличие данной книги от всех других пособий для начинающих изучать Python в том, что параллельно с изучением теоретического материала читатель знакомится с реализацией проектов различных игр. Таким образом будущий программист сможет лучше понять, как те или иные возможности языка используются в реальных проектах.
В книге рассматриваются основы как языка Python, так и программирования в целом. Отличная книга для первого знакомства с этим языком.
Если вы хотите перейти на Python 3 или правильно обновить старый код, написанный на Python 2, то эта книга для вас. А еще для вас - по переводу проекта с Python 2 на Python 3 без боли.
В книге вы найдёте много практических примеров на Python 3.3, каждый из которых подробно разобран. Рассматриваются следующие темы:
В ходе чтения этой книги вы разработаете веб-приложение, параллельно изучив практические преимущества разработки через тестирование. Вы разберёте такие темы, как интеграция баз данных, JS-инструменты для автоматизации, NoSQL, веб-сокеты и асинхронное программирование.
В книге подробно рассматривается Python 3: типы данных, операторы, условия, циклы, регулярные выражения, функции, инструменты объектно-ориентированного программирования, работа с файлами и каталогами, часто используемые модули стандартной библиотеки. Кроме того, в книге также уделено внимание базе данных SQLite, интерфейсу доступа к базе и способам получения данных из Интернета.
Вторая часть книги целиком посвящена библиотеке PyQt 5, позволяющей создавать приложения с графическим интерфейсом на языке Python. Здесь рассмотрены средства для обработки сигналов и событий, управления свойствами окна, разработки многопоточных приложений, описаны основные компоненты (кнопки, текстовые поля, списки, таблицы, меню, панели инструментов и др.), варианты их размещения внутри окна, инструменты для работы с базами данных, мультимедиа, печати документов и экспорта их в формате Adobe PDF.
Может, ваши программы на Pyhton и работают, но они могут работать быстрее. Это практическое руководство поможет вам лучше понять устройство языка, и вы научитесь находить в коде узкие места и повышать скорость работы программ, работающих с большими объёмами данных.
Как понятно из названия, цель данной книги - дать наиболее полное понятие фреймворку для разработки веб-приложений Django. Из-за того, что книга была выпущена на русском языке в далеком 2010 году, в ней рассматривается устаревшая версия фреймворка, Django 1.1. Но все равно книга рекомендуется к прочтению, поскольку в ней можно почерпнуть основы Django. А хороших книг по этому фреймворку на русском языке, кроме этой, практически нет.
Авторы Адриан Головатый и Джейкоб Каплан-Мосс подробно рассматривают компоненты фреймворка. В книге достаточно много материала по разработке интернет-ресурсов на Django – от основ до таких специальных тем, как генерация PDF и RSS, безопасность, кэширование и интернационализация. Перед прочтением книги рекомендуется освоить базовые понятия веб-разработки.
«Making Games with Python & Pygame» - это книга, которая посвящена библиотеке для разработки игр Pygame. В каждой главе даются полный исходный код новой игры и подробные объяснения использованных принципов разработки
Книга «Invent Your Own Computer Games with Python» научит вас программировать на Python на примере разработки игр. В поздних игр рассматривается создание двумерных игр при помощи библиотеки Pygame. Вы научитесь:
Прокачайте свои навыки, поработав со структурами данных и алгоритмами в новом ключе - научном. Изучите примеры сложных систем с понятными объяснениями. В книге предлагается:
В данной книге язык Python рассматривается как инструмент для решения задач, требующих вычислений с обработкой больших объемов данных. Цель данной книги - научить читателя применять стек инструментов исследования данных языка Python для эффективного хранения, манипуляции и понимания данных.
Каждая глава книги посвящена определенной библиотеке для работы с большими данными. В первой главе рассматривается IPython и Jupyter, во второй - NumPy, в третьей - Pandas. Четвертая глава содержит материал о Matplotlib, пятая - о Scikit-Learn.
«Python for Data Analysis» повествует о всевозможных способах обработки данных. Книга является отличным вводным материалом в области научных вычислений. Вот с чем вы познакомитесь:
Вы также научитесь измерять данные на временных промежутках и решать аналитические задачи во многих сферах науки.
В этой книге предлагается изучить различные методы анализа данных при помощи Python. Вот чему вы научитесь после прочтения:
Это пособие понятным языком объясняет принципы обработки естественных языков. Вы научитесь писать программы, способные обрабатывать большие наборы неструктурированных текстов, получите доступ к обширным наборам данных и познакомитесь с основными алгоритмами.
Если вы когда-нибудь часами переименовывали файлы или обновляли сотни ячеек таблицы, то знаете, как это выматывает. Хотите научиться автоматизировать такие процессы? В книге «Automate the Boring Stuff with Python» рассказывается о том, как создавать программы, которые будут решать различные рутинные задачи за минуты. После прочтения вы научитесь автоматизировать следующие процессы:
Отличная книга с минимальным порогом вхождения. Рассказывает больше о биологии, нежели о языке, но всем работающим в этой сфере она точно пригодится. Снабжена большим количеством разобранных примеров различной сложности.
В этой книге рассказывается об основах программирования системы Raspberry Pi. Автор уже составил для вас множество скриптов, а также предоставил доходчивое и подробное руководство по созданию своих. Помимо обычных упражнений вам предлагается реализовать три проекта: игру «Виселица», LED-часы и программно управляемого робота.
«Hacking Secret Ciphers with Python» не только рассказывает об истории существующих шифров, но и учит создавать собственные программы для шифрования и взлома шифров. Отличная книга для изучения основ криптографии.
Делитесь полезными книгами по Python в комментариях!
Введение
В связи с наблюдаемым в настоящее время стремительным развитием персональной вычислительной техники, происходит постепенное изменение требований, предъявляемых к языкам программирования. Все большую роль начинают играть интерпретируемые языки, поскольку возрастающая мощь персональных компьютеров начинает обеспечивать достаточную скорость выполнения интерпретируемых программ. А единственным существенным преимуществом компилируемых языков программирования является создаваемый ими высокоскоростной код. Когда скорость выполнения программы не является критичной величиной, наиболее правильным выбором будет интерпретируемый язык, как более простой и гибкий инструмент программирования.
В связи с этим, определенный интерес представляет рассмотрение сравнительно
нового языка программирования Python (пайтон), который был создан его автором Гвидо
ван Россумом (Guido van Rossum) в начале 90-х годов.
Общие сведения о Python. Достоинства и недостатки
Python является интерпретируемым, изначально объектно-ориентированным языком программирования. Он чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных (списки, словари, тьюплы).
Достоинства языка.
Несомненным достоинством является то, что интерпретатор Python
реализован практически на всех платформах и операционных системах. Первым
таким языком был C, однако его типы данных на разных машинах могли занимать разное
количество памяти и это служило некоторым препятствием при написании действительно
переносимой программы. Python же таким недостатком не обладает.
Следующая немаловажная черта - расширяемость языка, этому придается большое значение и, как пишет сам автор, язык был задуман именно как расширяемый. Это означает, что имеется возможность совершенствования языка всеми всеми заинтересованными программистами. Интерпретатор написан на С и исходный код доступен для любых манипуляций. В случае необходимости, можно вставить его в свою программу и использовать как встроенную оболочку. Или же, написав на C свои дополнения к Python и скомпилировав программу, получить "расширенный" интерпретатор с новыми возможностями.
Следующее достоинство - наличие большого числа подключаемых к программе модулей, обеспечивающих различные дополнительные возможности. Такие модули пишутся на С и на самом Python и могут быть разработаны всеми достаточно квалифицированными программистами. В качестве примера можно привести следующие модули:
Обзор особенностей
1. Python, в отличие от многих языков (Pascal,
C++, Java, и т.д.), не требует описания переменных. Они создаются в месте
их инициализации, т.е. при первом присваивании переменной какого-либо значения.
Значит, тип переменной определяется типом присваиваемого значения. В этом
отношении Python напоминает Basic.
Тип переменной не является неизменным. Любое присваивание для нее корректно
и это приводит лишь к тому, что типом переменной становится тип нового
присваиваемого значения.
2. В таких языках как Pascal, C, C++ организация списков представляла некоторые трудности. Для их реализации приходилось хорошо изучать принципы работы с указателями и динамической памятью. И даже имея хорошую квалификацию, программист, каждый раз заново реализуя механизмы создания, работы и уничтожения списков, мог легко допустить трудноуловимые ошибки. Ввиду этого были созданы некоторые средства для работы со списками. Например, в Delphi Pascal имеется класс TList, реализующий списки; для С++ разработана библиотека STL (Standard Template Library), содержащая такие структуры как векторы, списки, множества, словари, стеки и очереди. Однако, такие средства имеются не во всех языках и их реализациях.
Одной из отличительных черт Python является наличие таких встроенных в сам язык структур как тьюплы (tuple), списки (list) и словари (dictionary), которые иногда называют картами (map). Рассмотрим их поподробней.
3. Python в отличие от Pascal, C, C++ не поддерживает работу с указателями, динамической памятью и адресную арифметику. В этом он похож на Java. Как известно, указатели служат источником трудноуловимых ошибок и работа с ними относится больше к программированию на низком уровне. Для обеспечения большей надежности и простоты они небыли включены в Python.
4. Одним из особенностей Python является то, как происходит присваивание одной переменной другой, т.е. когда по обе стороны от оператора "= " стоят переменные.
Следуя Тимоти Бадду (), будем называть семантикой указателей случай, когда присваивание приводит лишь к присваиванию ссылки (указателя), т.е. новая переменная становится лишь другим именем, обозначающим тот же участок памяти, что и старая переменная. При этом изменение значения, обозначаемого новой переменной, приведет к изменению значения старой, т.к. они, фактически, означают одно и то же.
Когда же присваивание приводит к созданию нового объекта (здесь объект - в смысле участка памяти для хранения значения какого-либо типа) и копированию в него содержимого присваиваемой переменной, этот случай назовем семантикой копирования . Таким образом, если при копировании действует семантика копирования, то переменные по обе стороны от знака "=" будут означать два независимых объекта с одинаковым содержанием. И здесь последующее изменение одной переменной никак не скажется на другой.
Присваивание в Python происходит следующим образом: если присваеваемый
объект является экземпляром таких типов как числа или строки, то действует
семантика копирования, если же в правой части стоит экземпляр класса,
список, словарь или тьюпл, то действует семантика указателей. Пример:
a = 2; b = a; b = 3
print " семантика копирования: a=", a, "b=", b
a = ; b = a; b = 3
print " семантика указателей: a=", a, "b=", b
Результат
:
семантика копирования: a= 2 b= 3
семантика указателей: a= b=
Для тех из вас, кто хочет знать в чем тут дело, я приведу другой взгляд на присваивание в Python. Если в таких языках как Basic, Pascal, C/C++ мы имели дело с переменными-"емкостями", и хранимыми в них константами (числовыми, символьными, строковыми - не суть важно), а операция присваивания означала "занесение" константы в присваиваемую переменную, то в Python мы уже должны работать с переменными-"именами" и именуемыми ими объектами. (Замечаете некоторую аналогию с языком Prolog?) Что же такое объект в Python? Это все то, чему можно дать имя: числа, строки, списки, словари, экземпляры классов (которые в Object Pascal и называются объектами), сами классы (!), функции, модули и т.д. Так вот, при присваивании переменной некоторого объекта, переменная становится его "именем", причем таких "имен" объект может иметь сколько угодно и все они никак не зависят друг от друга.
Теперь, объекты делятся на модифицируемые (мутируемые) и неизменные. Мутируемые - те, которые могут изменить свое "внутреннее содержание", например, списки, словари, экземпляры классов. А неизменные - такие как числа, тьюплы, строки (да, строки тоже; можно переменной присвоить новую строку, полученную из старой, но саму старую строку модифицировать не получится).
Так вот, если мы пишем
a = ; b = a; b = 3
,
Python это интерпретирует так:
И последнее, что стоит сказать насчет этого: хотя нет возможности изменения структуры тьюпла, но содержащиеся в нем мутируемые компоненты по-прежнему доступны для модификации:
T = (1, 2, , "string") t = 6 # так нельзя del t # тоже ошибка t = 0 # допустимо, теперь третья компонента - список t = "S" # ошибка: строки не мутируемы
5. Весьма оригинальным является то, как
в Python группируются операторы. В Pascal для этого служат операторные
скобки begin-end
, в C, C++, Java - фигурные скобки {}, в Basic применяются
закрывающие окончания конструкций языка (NEXT, WEND, END IF, END SUB).
В языке Python все гораздо проще: выделение блока операторов осуществляется
путем сдвига выделяемой группы на один или более пробелов или символов
табуляции вправо относительно заголовка конструкции к которой и будет относиться
данный блок. Например:
Описание языка. Управляющие конструкции
Обработка исключительных ситуаций
try:
<оператор1> [ except [<исключение> [, <переменная>] ]: <оператор2>] [ else <оператор3>] |
Выполняется <оператор1>, если при этом возникла исключительная ситуация
<исключение>, то выполняется <оператор2>. Если <исключение> имеет
значение, то оно присваивается <переменной>.
В случае успешного завершения <оператора1>, выполняется <оператор3>. |
try:
<оператор1> finally: <оператор2> |
Выполняется <оператор1>. Если не возникло исключений, то выполняется <оператор2>. Иначе выполняется <оператор2> и немедленно инициируется исключительная ситуация. |
raise <исключение> [<значение>] | Инициирует исключительную ситуацию <исключение> с параметром <значение>. |
Исключения - это просто строки (string). Пример:
My_ex = ‘bad index’ try: if bad: raise my_ex, bad except my_ex, value: print ‘ Error ’, value
Объявление функций
Объявление классов
Class cMyClass:
def __init__(self, val):
self.value = val
#
def printVal (self):
print ‘ value = ’, self.value
#
# end cMyClass
obj = cMyClass (3.14)
obj.printVal ()
obj.value = " string now "
obj.printVal ()
Результат:
value = 3.14
value = string now
Операторы для всех типов последовательностей (списки, тьюплы, строки)
Операторы для списков (list)
s[i] = x | i-тый элемент s заменяется на x. |
s = t | часть элементов s от i до j-1 заменяется на t (t может быть также списком). |
del s | удаляет часть s (также как и s = ). |
s.append (x) | добавляет элемент x к концу s. |
s.count (x) | возвращает количество элементов s равных x. |
s.index (x) | возвращает наименьший i, такой, что s[i]==x. |
s.insert (i,j) | часть s, начиная с i-го элемента, сдвигается вправо, и s[i] присваивается x. |
s.remove (x) | то же, что и del s[ s.index(x) ] - удаляет первый элемент s, равный x. |
s.reverse () | записывает строку в обратном порядке |
s.sort () | сортирует список по возрастанию. |
Операторы для словарей (dictionary)
Файловые объекты
Создаются встроенной функцией open()
(ее описание смотрите ниже).
Например: f = open (‘mydan.dat’,‘r’)
.
Методы:
Другие элементы языка и встроенные функции
= | присваивание. |
print [ < c1 > [, < c2 >]* [, ] ] | выводит значения < c1 >, < c2 > в стандартный вывод. Ставит пробел между аргументами. Если запятая в конце перечня аргументов отсутствует, то осуществляет переход на новую строку. |
abs (x) | возвращает абсолютное значение x. |
apply (f, <аргументы>) | вызывает функцию (или метод) f с < аргументами >. |
chr (i) | возвращает односимвольную строку с ASCII кодом i. |
cmp (x, y) | возвращает отрицательное, ноль, или положительное значение, если, соответственно, x <, ==, или > чем y. |
divmod (a, b) | возвращает тьюпл (a/b, a%b), где a/b - это a div b (целая часть результата деления), a%b - это a mod b (остаток от деления). |
eval (s)
|
возвращает объект, заданный в s как строка (string). S может содержать любую структуру языка. S также может быть кодовым объектом, например: x = 1 ; incr_x = eval ("x+1") . |
float (x) | возвращает вещественное значение равное числу x. |
hex (x) | возвращает строку, содержащую шестнадцатеричное представление числа x. |
input (<строка>) | выводит <строку>, считывает и возвращает значение со стандартного ввода. |
int (x) | возвращает целое значение числа x. |
len (s) | возвращает длину (количество элементов) объекта. |
long (x) | возвращает значение типа длинного целого числа x. |
max (s) , min (s) | возвращают наибольший и наименьший из элементов последовательности s (т.е. s - строка, список или тьюпл). |
oct (x) | возвращает строку, содержащую представление числа x. |
open (<имя файла>, <режим>=‘r’) | возвращает файловый объект, открытый для чтения. <режим> = ‘w’ - открытие для записи. |
ord (c) | возвращает ASCII код символа (строки длины 1) c. |
pow (x, y) | возвращает значение x в степени y. |
range (<начало>, <конец>, <шаг>) | возвращает список целых чисел, больших либо равных <начало> и меньших чем <конец>, сгенерированных с заданным <шагом>. |
raw_input ( [ <текст> ] ) | выводит <текст> на стандартный вывод и считывает строку (string) со стандартного ввода. |
round (x, n=0) | возвращает вещественное x, округленное до n-го разряда после запятой. |
str (<объект>) | возвращает строковое представление <объекта>. |
type (<объект>) | возвращает тип объекта.
Например: if type(x) == type(‘’): print ‘ это строка ’ |
xrange (<начало>, <конец>, <шаг>) | аналогичен range, но лишь имитирует список, не создавая его. Используется в цикле for. |
Cпециальные функции для работы со списками
filter (<функция>, <список>) | возвращает список из тех элементов <спиcка>, для которых <функция> принимает значение "истина". |
map (<функция>, <список>) | применяет <функцию> к каждому элементу <списка> и возвращает список результатов. |
reduce (f,
<список>,
[, <начальное значение> ] ) |
возвращает значение полученное "редуцированием" <списка> функцией
f. Это значит, что имеется некая внутренняя переменная p, которая инициализируется
<начальным значением>, затем, для каждого элемента <списка>, вызывается
функция f с двумя параметрами: p и элементом <списка>. Возвращаемый
f результат присваивается p. После перебора всего <списка> reduce возвращает
p.
С помощью данной функции можно, к примеру, вычислить сумму элементов списка: def func (red, el): return red+el sum = reduce (func, , 0) # теперь sum == 15 |
lambda [<список параметров>] : <выражение> | "анонимная" функция, не имеющая своего имени и записываемая в месте своего вызова. Принимает параметры, заданные в <списке параметров>, и возвращает значение <выражения>. Используется для filter, reduce, map. Например: >>>print filter (lambda x: x>3, ) >>>print map (lambda x: x*2, ) >>>p=reduce (lambda r, x: r*x, , 1) >>>print p 24 |
Импортирование модулей
Стандартный модуль math
Переменные: pi
, e
.
Функции
(аналогичны функциям языка C):
acos(x) | cosh(x) | ldexp(x,y) | sqrt(x) |
asin(x) | exp(x) | log(x) | tan(x) |
atan(x) | fabs(x) | sinh(x) | frexp(x) |
atan2(x,y) | floor(x) | pow(x,y) | modf(x) |
ceil(x) | fmod(x,y) | sin(x) | |
cos(x) | log10(x) | tanh(x) |
Модуль string
Функции:
Заключение
Благодаря простоте и гибкости языка Python, его можно рекомендовать
пользователям (математикам, физикам, экономистам и т.д.) не являющимся
программистами, но использующими вычислительную технику и программирование
в своей работе.
Программы на Python разрабатываются в среднем в полтора-два (а
порой и в два-три) раза быстрее нежели на компилируемых языках (С, С++,
Pascal). Поэтому, язык может представлять не малый интерес и для профессиональных
программистов, разрабатывающих приложения, не критичные к скорости выполнения,
а также программы, использующие сложные структуры данных. В частности,
Python хорошо зарекомендовал себя при разработке программ работы с графами,
генерации деревьев.
Литература
Python - это популярный и мощный язык сценариев, с помощью которого вы можете сделать все что захотите. Например, вы можете сканировать веб-сайты и собирать с них данные, создавать сетевые и инструменты, выполнять вычисления, программировать для Raspberry Pi, разрабатывать графические программы и даже видеоигры. На Python можно \\ писать системные программы, независимые от платформы.
В этой статье мы рассмотрим основы программирования на Python, мы постараемся охватить все основные возможности, которые вам понадобятся чтобы начать пользоваться языком. Мы будем рассматривать использование классов и методов для решения различных задач. Предполагается, что вы уже знакомы с основами и синтаксисом языка.
Я не буду вдаваться в историю создания и разработки языка, это вы без труда узнать из видео, которое будет прикреплено ниже. Важно отметить, что Python - скриптовый язык. Это означает, ваш код проверяется на ошибки и сразу же выполняется без какой-либо дополнительной компиляции или переработки. Такой подход еще называется интерпретируемым.
Это снижает производительность, но очень удобно. Здесь присутствует интерпретатор, в который вы можете вводить команды и сразу же видеть их результат. Такая интерактивная работа очень сильно помогает в обучении.
Запустить интерпретатор Python очень просто в любой операционной системе. Например, в Linux достаточно набрать команду python в терминале:
В открывшемся приглашении ввода интерпретатора мы видим версию Python, которая сейчас используется. В наше время очень сильно распространены две версии Python 2 и Python 3. Они обе популярны, потому что на первой было разработано множество программ и библиотек, а вторая - имеет больше возможностей. Поэтому дистрибутивы включают обе версии. По умолчанию запускается вторая версия. Но если вам нужна версия 3, то нужно выполнить:
Именно третья версия будет рассматриваться в этой статье. А теперь рассмотрим основные возможности этого языка.
Строки в Python неизменяемые, вы не можете изменить один из символов строки. Любое изменение содержимого требует создания новой копии. Откройте интерпретатор и выполняйте перечисленные ниже примеры, для того чтобы лучше усвоить все написанное:
str = "welcome " + "to python"
print (str)
str = "Losst" * 2
print (str)
Вы можете объединить строку с числом или логическим значением. Но для этого нужно использовать преобразование. Для этого существует функция str():
str = "Это тестовое число " + str(15)
print (str)
Вы можете найти символ или подстроку с помощью метода find:
str = "Добро пожаловать на сайт"
print(str.find("сайт"))
Этот метод выводит позицию первого вхождения подстроки сайт если она будет найдена, если ничего не найдено, то возвращается значение -1. Функция начинает поиск с первого символа, но вы можете начать с энного, например, 26:
str = "Добро пожаловать на сайт сайт"
print(str.find("losst",26))
В этом варианте функция вернет -1, поскольку строка не была найдена.
Мы получили позицию подстроки, которую ищем, а теперь как получить саму подстроку и то, что после нее? Для этого используйте такой синтаксис [начало:конец] ,просто укажите два числа или только первое:
str = "Один два три"
print(str[:2])
print(str)
print(str)
print(str[-1])
Первая строка выведет подстроку от первого до второго символа, вторая - от второго и до конца. Обратите внимание, что отсчет начинается с нуля. Чтобы выполнять отсчет в обратном порядке, используйте отрицательное число.
Вы можете заменить часть строки с помощью метода replace:
str = "Этот сайт про Linux"
str2 = str.replace("Linux", "Windows")
print(str2)
Если вхождений много, то можно заменить только первое:
str = "Это сайт про Linux и я подписан на этот сайт"
str2 = str.replace("сайт", "страница",1)
print(str2)
Вы можете удалить лишние пробелы с помощью функции strip:
str = " Это веб-сайт про Linux "
print(str.strip())
Также можно удалить лишние пробелы только справа rstrip или только слева - lstrip.
Для изменения регистра символов существуют специальные функции:
str="Добро пожаловать на Losst"
print(str.upper())
print(str.lower())
Есть несколько функций для конвертирования строки в различные числовые типы, это int(), float() , long() и другие. Функция int() преобразует в целое, а float() в число с плавающей точкой:
str="10"
str2="20"
print(str+str2)
print(int(str)+int(str2))
Вы можете использовать функции min(), max(), len() для расчета количества символов в строке:
str="Добро пожаловать на сайт Losst"
print(min(str))
print(max(str))
print(len(str))
Первая показывает минимальный размер символа, вторая - максимальный, а третья - общую длину строки.
Вы можете получить доступ к каждому символу строки отдельно с помощью цикла for:
str="Добро пожаловать на сайт"
for i in range(len(str)):
print(str[i])
Для ограничения цикла мы использовали функцию len(). Обратите внимание на отступ. Программирование на python основывается на этом, здесь нет скобок для организации блоков, только отступы.
Числа в Python достаточно просто объявить или применять в методах. Можно создавать целые числа или числа с плавающей точкой:
num1 = 15
num2 = 3,14
Вы можете округлить число с помощью функции round, просто укажите сколько знаков нужно оставить:
a=15.5652645
print(round(a,2))
Получить случайные числа можно с помощью модуля random:
import random
print(random.random())
По умолчанию число генерируется из диапазона от 0,0 до 1,0. Но вы можете задать свой диапазон:
import random
numbers=
print(random.choice(numbers))
Язык программирования Python имеет модуль DateTime, который позволяет выполнять различные операции с датой и временем:
import datetime
cur_date = datetime.datetime.now()
print(cur_date)
print(cur_date.year)
print(cur_date.day)
print(cur_date.weekday())
print(cur_date.month)
print(cur_date.time())
В примере показано как извлечь нужное значение из объекта. Вы можете получить разницу между двумя объектами:
import datetime
time1 = datetime.datetime.now()
time2 = datetime.datetime.now()
timediff = time2 - time1
print(timediff.microseconds)
Вы можете сами создавать объекты даты с произвольным значением:
time1 = datetime.datetime.now()
time2 = datetime.timedelta(days=3)
time3=time1+time2
print(time3.date())
Метод strftime позволяет изменить формат даты и времени зависимо от выбранного стандарта или указанного формата. Вот основные символы форматирования:
import datetime
date1 = datetime.datetime.now()
print(date1.strftime("%d. %B %Y %I:%M%p"))
Вы можете использовать функцию strptime() для создания объекта даты из строки:
import datetime
date1=datetime.datetime.strptime("2016-11-21", "%Y-%m-%d")
date2=datetime.datetime(year=2015, month=11, day=21)
print(date1);
print(date2);
Управление файлами выполняется очень просто в язык программирования Python, это лучший язык для работы с файлами. Да и вообще, можно сказать, что Python - это самый простой язык.
Для копирования файлов нужно использовать функции из модуля subutil:
import shutil
new_path = shutil.copy("file1.txt", "file2.txt")
new_path = shutil.copy("file1.txt", "file2.txt", follow_symlinks=False)
Перемещение файлов выполняется с помощью функции move:
shutil.move("file1.txt", "file3.txt")
Функция rename из модуля os позволяет переименовывать файлы:
import os
os.rename("file1.txt", "file3.txt")
Вы можете использовать встроенные функции для открытия файлов, чтения или записи данных в них:
fd = open("file1.txt")
content = fd.read()
print(content)
Сначала нужно открыть файл для работы с помощью функции open. Для чтения данных из файла используется функция read, прочитанный текст будет сохранен в переменную. Вы можете указать количество байт, которые нужно прочитать:
fd = open("file1.txt")
content = fd.read(20)
print(content)
Если файл слишком большой, вы можете разбить его на строки и уже так выполнять обработку:
content = fd.readlines()
print(content)
Чтобы записать данные в файл, его сначала нужно открыть для записи. Есть два режима работы - перезапись и добавление в конец файла. Режим записи:
fd = open("file1.txt","w")
И добавление в конец файла:
fd = open("file1.txt","a")
content = fd.write("Новое содержимое")
Чтобы создать директорию используйте функцию mkdir из модуля os:
import os
os.mkdir("./новая папка")
Вы можете использовать функции getmtime(), getatime() и getctime() для получения времени последнего изменения, последнего доступа и создания. Результат будет выведен в формате Unix, поэтому его нужно конвертировать в читаемый вид:
import os
import datetime
tim=os.path.getctime("./file1.txt")
print(datetime.datetime.fromtimestamp(tim))
С помощью функции listdir() вы можете получить список файлов в папке:
import os
files= os.listdir(".")
print(files)
Для решения той же задачи можно использовать модуль glob:
import glob
files=glob.glob("*")
print(files)
import pickle
fd = open("myfile.pk ", "wb")
pickle.dump(mydata,fd)
Затем для восстановления объекта используйте:
import pickle
fd = open("myfile.pk ", "rb")
mydata = pickle.load(fd)
Стандартная библиотека Python позволяет работать с различными форматами архивов, например, zip, tar, gzip, bzip2. Чтобы посмотреть содержимое файла используйте:
import zipfile
my_zip = zipfile.ZipFile("my_file.zip", mode="r")
print(file.namelist())
А для создания zip архива:
import zipfile
file=zipfile.ZipFile("files.zip","w")
file.write("file1.txt")
file.close()
Также вы можете распаковать архив:
import zipfile
file=zipfile.ZipFile("files.zip","r")
file.extractall()
file.close()
Вы можете добавить файлы в архив так:
import zipfile
file=zipfile.ZipFile("files.zip","a")
file.write("file2.txt")
file.close()
С помощью модуля pandas можно смотреть и разбирать содержимое CSV и Exel таблиц. Сначала нужно установить модуль с помощью pip:
sudo pip install pandas
Затем для разбора наберите:
import pandas
data=pandas.read_csv("file.csv)
По умолчанию pandas использует первую колонку для заголовков каждой из строк. Вы можете задать колонку для индекса с помощью параметра index_col или указать False, если он не нужен. Чтобы записать изменения в файл используйте функцию to_csv:
data.to_csv("file.csv)
Таким же образом можно разобрать файл Exel:
data = pd.read_excel("file.xls", sheetname="Sheet1")
Если нужно открыть все таблицы, используйте:
data = pd.ExcelFile("file.xls")
Затем можно записать все данные обратно:
data.to_excel("file.xls", sheet="Sheet1")
Программирование на Python 3 часто включает работу с сетью. Стандартная библиотека Python включает в себя возможности работы с сокетами для доступа к сети на низком уровне. Это нужно для поддержки множества сетевых протоколов.
import socket
host = "192.168.1.5"
port = 4040
my_sock = socket.create_connection ((host, port))
Этот код подключается к порту 4040 на машине 192.168.1.5. Когда сокет открыт, вы можете отправлять и получать данные:
my_sock.sendall(b"Hello World")
Нам необходимо писать символ b, перед строкой, потому что надо передавать данные в двоичном режиме. Если сообщение слишком большое, вы можете выполнить итерацию:
msg = b"Longer Message Goes Here"
mesglen = len(msg)
total = 0
while total < msglen:
sent = my_sock.send(msg)
total = total + sent
Для получения данных вам тоже нужно открыть сокет, только используется метод my_sock_recv:
data_in = my_sock.recv(2000)
Здесь мы указываем сколько данных нужно получить - 20000, данные не будут переданы в переменную, пока не будет получено 20000 байт данных. Если сообщение больше, то для его получения нужно создать цикл:
buffer = bytearray(b" " * 2000)
my_sock.recv_into(buffer)
Если буфер пуст, туда будет записано полученное сообщение.
Стандартная библиотека Python позволяет получать и отправлять электронные сообщения.
Для получения сообщений мы используем POP сервер:
import getpass,poplib
pop_serv = poplib.POP3("192.168.1.5")
pop_serv.user("myuser")
pop_serv.pass_(getpass.getpass())
Модуль getpass позволяет получить пароль пользователя безопасным образом, так что он не будет отображаться на экране. Если POP сервер использует защищенное соединение, вам нужно использовать класс POP3_SSL. Если подключение прошло успешно, вы можете взаимодействовать с сервером:
msg_list = pop_serv.list() # to list the messages
msg_count = pop_serv.msg_count()
Для завершения работы используйте:
Для подключения и работы с сервером IMAP используется модуль imaplib:
import imaplib, getpass
my_imap = imaplib.IMAP4("imap.server.com")
my_imap.login("myuser", getpass.getpass())
Если ваш IMAP сервер использует защищенное соединение, нужно использовать класс IMAP4_SSL. Для получения списка сообщений используйте:
data = my_imap.search(None, "ALL")
Затем вы можете выполнить цикл по выбранному списку и прочитать каждое сообщение:
msg = my_imap.fetch(email_id, "(RFC822)")
Но, не забудьте закрыть соединение:
my_imap.close()
my_imap.logout()
Для отправки почты используется протокол SMTP и модуль smtplib:
import smtplib, getpass
my_smtp = smtplib.SMTP(smtp.server.com")
my_smtp.login("myuser", getpass.getpass())
Как и раньше, для защищенного соединения используйте SMTP_SSL. Когда соединение будет установлено, можно отправить сообщение:
from_addr = "[email protected]"
to_addr = "[email protected]"
msg = "From: [email protected]\r\nTo: [email protected]\r\n\r\nHello, this is a test message"
my_smtp.sendmail(from_addr, to_addr, msg)
Программирование на Python часто используется для написания различных скриптов для работы с веб.
Модуль urllib позволяет выполнять запросы к веб-страницам различными способами. Для отправки обычного запроса используется класс request. Например, выполним обычный запрос страницы:
import urllib.request
my_web = urllib.request.urlopen("https://www.google.com")
print(my_web.read())
Если вам нужно отправить веб-форму, необходимо использовать не GET запрос, а POST:
import urllib.request
mydata = b"Your Data Goes Here"
my_req = urllib.request.Request("http://localhost", data=mydata,method="POST")
my_form = urllib.request.urlopen(my_req)
print(my_form.status)
С помощью класса Socket вы можете принимать входящие подключения, а значит можете создать веб-сервер с минимальными возможностями:
import socket
host = ""
port = 4242
my_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
my_server.bind((host, port))
my_server.listen(1)
Когда сервер создан. вы можете начать принимать соединения:
addr = my_server.accept()
print("Connected from host ", addr)
data = conn.recv(1024)
И не забудьте закрыть соединение:
Как и большинство современных языков, Python позволяет запускать несколько параллельных потоков, которые могут быть полезными, если нужно выполнить сложные вычисления. В стандартной библиотеке есть модуль threading, который содержит класс Therad:
import threading
def print_message():
print("The message got printed from a different thread")
my_thread = threading.Thread(target=print_message)
my_thread.start()
Если функция работает слишком долго, вы можете проверить все ли в порядке, с помощью функции is_alive(). Иногда вашим потокам нужно получать доступ к глобальным ресурсам. Для этого используются блокировки:
import threading
num = 1
my_lock = threading.Lock()
def my_func():
global num, my_lock
my_lock.acquire()
sum = num + 1
print(sum)
my_lock.release()
my_thread = threading.Thread(target=my_func)
my_thread.start()
В этой статье мы рассмотрели основы программирования python. Теперь вы знаете большинство часто используемых функций и можете применять их в своих небольших программах. Вам понравиться программирование на Python 3, это очень легко! Если у вас остались вопросы, спрашивайте в комментариях!
На завершение статьи отличная лекция о Python:
27 августа 2012 в 15:18
Здравствуйте всем!
Удобочитаемый синтаксис, прост в обучении, высокоуровневый язык, Объектно-Ориентированый язык программирования (ООП)
, мощный, интерактивный режим, масса библиотек. Множество иных плюсов… И это всё в одном языке.
Для начала окунёмся в возможности и узнаем, что же умеет Python?
Вот источники, которые помогут Вам познакомиться ближе с Python, а может и стать будущим Гвидо ван Россумом.
*
Некоторые источники могут быть на английском. Не стоит этому удивляться, сейчас масса отличной литературы пишется именно на английском языке. Да и для самого программирования надо знать хотя бы базовые знания английского.
Настоятельно рекомендую прочитать первым делом книгу - Марк Лутц. Изучаем Python, 4-е издание . Книга переведена на русский язык, так что бояться не стоит, если Вы вдруг не знаете английский. Но именно четвёртое издание.
Для тех, кто знает английский, можно прочитать документацию на официальном сайте Python . Там всё довольно понятно описано.
А если же Вы более принимаете информацию по видео, то могу посоветовать уроки от компании Google, которые ведёт Ник Парланте - ученик из Стэнфорда. Шесть видеолекций на YouTube . Но в бочке мёда тут есть капля дёгтя… Ведёт он на английском языке с английскими субтитрами. Но надеюсь, что остановит это немногих.
Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое.
Язык программирования Python уже давно занял лидирующее место среди всех языков программирования. По количеству сфер применения и возможностям он конкурирует с такими языками, как C++ и JavaScript. Конечно же, Python гораздо моложе, чем классические языки программирования, но он является идеальным для новичков и не только. Python используется в таких крупных компаниях, как Pixar, NASA.
Во-первых: данный язык программирования обладает динамической типизацией, что означает отсутствие необходимости объявлять тип переменных, приводить один тип к другому и задумываться о каких-либо ограничениях по количеству символов, содержащихся в этих переменных. Динамическая типизация облегчает участь новичков, потому что они не должны глубоко вникать в устройство оперативной памяти и центрального процессора, чтобы понимать, как устроен язык. Конечно же, существуют правила, объясняющие некоторые принципы приведения одного типа данных к другому. На них, конечно же, стоит обратить внимание при изучении Python: так вы сможете избежать логических ошибок, которые не распознаются компилятором.
Пример динамической типизацией:
Во-вторых: этот язык обладает мощнейшими возможностями объектно-ориентированного программирования. Это значит то, что логическая структура программы на языке Python может быть построена так, что её код уместится в сравнительно малое количество строк. Действительно, программы, написанные на языке Python, занимают в полтора-два раза меньше строк, чем те же самые программы, написанные, например, на C++.
Python является языком общего назначения. Это значит то, что он может применяться в абсолютно любой сфере разработки программного обеспечения. Действительно, на Python можно разработать всё: сложные математические системы с помощью модуля NumPy (альтернатива MatLab), веб-приложения с помощью Django, графические интерфейсы с помощью Tkinter, игры с помощью PyGame и так далее.
Единственным минусом данного языка является его низкая скорость работы по сравнению с классическими языками (C++, Java). С другой стороны, вычислительная мощность современных компьютеров делает эту разницу незаметной. Однако и здесь разработчики Python нашли гениальное решение. Среда исполнения CPython компилирует код без промежуточной стадии машинного кода, что ускоряет работу программы. Таким образом, модули программы, скорость работы которых имеет решающее значение, могут быть разработаны с помощью CPython.
Из всего вышесказанного следует, что Python достоин того, чтобы быть изученным. Если вы начинающий программист, то смело выбирайте Python в качестве первого языка. Это облегчит вам обучение искусству программирования и даст вам возможность для роста в дальнейшем. Для установки Python на линуксе можете прочитати