Интерактивный учебник языка Python. Легкий способ выучить язык программирования Python: существует ли он

P ython является объектно-ориентированным языком программирования высокого уровня общего назначения, интерпретируемый, интерактивный. Он был создан Guido van Rossum в 1985- 1990 годах. Как исходный код Perl, Python также доступен под лицензией GNU General Public License (). Python назван в честь телешоу под названием «Летающий цирк Монти Пайтона».

Python 3.0 был выпущен в 2008. Хотя эта версия должна быть несовместной с прошлой версией, позже многие из его важных особенностей были импортированы для совместимости с версией 2.7. Этот учебник описывает достаточно для понимания языка программирования Python версии 3.

Аудитория

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

Предпосылки

Вы должны иметь общее представление о компьютерном программировании. Основное понимание любого из языков программирования является плюсом.

Выполнение программы на Python

Минимальный пример программы на Python:

#!/usr/bin/python3 print ("Hello, Python!")

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

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

Что такое Python?

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

Это снижает производительность, но очень удобно. Здесь присутствует интерпретатор, в который вы можете вводить команды и сразу же видеть их результат. Такая интерактивная работа очень сильно помогает в обучении.

Работа в интерпретаторе

Запустить интерпретатор Python очень просто в любой операционной системе. Например, в Linux достаточно набрать команду python в терминале:

В открывшемся приглашении ввода интерпретатора мы видим версию Python, которая сейчас используется. В наше время очень сильно распространены две версии Python 2 и Python 3. Они обе популярны, потому что на первой было разработано множество программ и библиотек, а вторая - имеет больше возможностей. Поэтому дистрибутивы включают обе версии. По умолчанию запускается вторая версия. Но если вам нужна версия 3, то нужно выполнить:

Именно третья версия будет рассматриваться в этой статье. А теперь рассмотрим основные возможности этого языка.

Операции со строками

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

1. Объединение строк

str = "welcome " + "to python"
print (str)

2. Умножение строк

str = "Losst" * 2
print (str)

3. Объединение с преобразованием

Вы можете объединить строку с числом или логическим значением. Но для этого нужно использовать преобразование. Для этого существует функция str():

str = "Это тестовое число " + str(15)
print (str)

4. Поиск подстроки

Вы можете найти символ или подстроку с помощью метода find:

str = "Добро пожаловать на сайт"
print(str.find("сайт"))

Этот метод выводит позицию первого вхождения подстроки сайт если она будет найдена, если ничего не найдено, то возвращается значение -1. Функция начинает поиск с первого символа, но вы можете начать с энного, например, 26:

str = "Добро пожаловать на сайт сайт"
print(str.find("losst",26))

В этом варианте функция вернет -1, поскольку строка не была найдена.

5. Получение подстроки

Мы получили позицию подстроки, которую ищем, а теперь как получить саму подстроку и то, что после нее? Для этого используйте такой синтаксис [начало:конец] ,просто укажите два числа или только первое:

str = "Один два три"
print(str[:2])
print(str)
print(str)
print(str[-1])

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

6. Замена подстроки

Вы можете заменить часть строки с помощью метода replace:

str = "Этот сайт про Linux"
str2 = str.replace("Linux", "Windows")
print(str2)

Если вхождений много, то можно заменить только первое:

str = "Это сайт про Linux и я подписан на этот сайт"
str2 = str.replace("сайт", "страница",1)
print(str2)

7. Очистка строк

Вы можете удалить лишние пробелы с помощью функции strip:

str = " Это веб-сайт про Linux "
print(str.strip())

Также можно удалить лишние пробелы только справа rstrip или только слева - lstrip.

8. Изменение регистра

Для изменения регистра символов существуют специальные функции:

str="Добро пожаловать на Losst"
print(str.upper())
print(str.lower())

9. Конвертирование строк

Есть несколько функций для конвертирования строки в различные числовые типы, это int(), float() , long() и другие. Функция int() преобразует в целое, а float() в число с плавающей точкой:

str="10"
str2="20"
print(str+str2)
print(int(str)+int(str2))

10. Длина строк

Вы можете использовать функции min(), max(), len() для расчета количества символов в строке:

str="Добро пожаловать на сайт Losst"
print(min(str))
print(max(str))
print(len(str))

Первая показывает минимальный размер символа, вторая - максимальный, а третья - общую длину строки.

11. Перебор строки

Вы можете получить доступ к каждому символу строки отдельно с помощью цикла for:

str="Добро пожаловать на сайт"
for i in range(len(str)):
print(str[i])

Для ограничения цикла мы использовали функцию len(). Обратите внимание на отступ. Программирование на python основывается на этом, здесь нет скобок для организации блоков, только отступы.

Операции с числами

Числа в Python достаточно просто объявить или применять в методах. Можно создавать целые числа или числа с плавающей точкой:

num1 = 15
num2 = 3,14

1. Округление чисел

Вы можете округлить число с помощью функции round, просто укажите сколько знаков нужно оставить:

a=15.5652645
print(round(a,2))

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())

1. Форматирование даты и времени

Метод strftime позволяет изменить формат даты и времени зависимо от выбранного стандарта или указанного формата. Вот основные символы форматирования:

  • %a - день недели, сокращенное название;
  • %A - день недели, полное название;
  • %w - номер дня недели, от 0 до 6;
  • %d - день месяца;
  • %b - сокращенное название месяца;
  • %B - полное название месяца;
  • %m - номер месяца;
  • %Y - номер года;
  • %H - час дня в 24 часовом формате;
  • %l - час дня в 12 часовом формате;
  • %p - AM или PM;
  • %M - минута;
  • %S - секунда.

import datetime
date1 = datetime.datetime.now()
print(date1.strftime("%d. %B %Y %I:%M%p"))

2. Создать дату из строки

Вы можете использовать функцию 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 - это самый простой язык.

1. Копирование файлов

Для копирования файлов нужно использовать функции из модуля subutil:

import shutil
new_path = shutil.copy("file1.txt", "file2.txt")

new_path = shutil.copy("file1.txt", "file2.txt", follow_symlinks=False)

2. Перемещение файлов

Перемещение файлов выполняется с помощью функции move:

shutil.move("file1.txt", "file3.txt")

Функция rename из модуля os позволяет переименовывать файлы:

import os
os.rename("file1.txt", "file3.txt")

3. Чтение и запись текстовых файлов

Вы можете использовать встроенные функции для открытия файлов, чтения или записи данных в них:

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("Новое содержимое")

4. Создание директорий

Чтобы создать директорию используйте функцию mkdir из модуля os:

import os
os.mkdir("./новая папка")

5. Получение времени создания

Вы можете использовать функции getmtime(), getatime() и getctime() для получения времени последнего изменения, последнего доступа и создания. Результат будет выведен в формате Unix, поэтому его нужно конвертировать в читаемый вид:

import os
import datetime
tim=os.path.getctime("./file1.txt")
print(datetime.datetime.fromtimestamp(tim))

6. Список файлов

С помощью функции listdir() вы можете получить список файлов в папке:

import os
files= os.listdir(".")
print(files)

Для решения той же задачи можно использовать модуль glob:

import glob
files=glob.glob("*")
print(files)

7. Сериализация объектов Python

import pickle
fd = open("myfile.pk ", "wb")
pickle.dump(mydata,fd)

Затем для восстановления объекта используйте:

import pickle
fd = open("myfile.pk ", "rb")
mydata = pickle.load(fd)

8. Сжатие файлов

Стандартная библиотека 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()

9. Разбор CSV и Exel файлов

С помощью модуля 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

Программирование на 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 позволяет получать и отправлять электронные сообщения.

1. Получение почты от POP3 сервера

Для получения сообщений мы используем 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()

Для завершения работы используйте:

2. Получение почты от IMAP сервера

Для подключения и работы с сервером 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()

3. Отправка почты

Для отправки почты используется протокол 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 часто используется для написания различных скриптов для работы с веб.

1. Веб краулинг

Модуль urllib позволяет выполнять запросы к веб-страницам различными способами. Для отправки обычного запроса используется класс request. Например, выполним обычный запрос страницы:

import urllib.request
my_web = urllib.request.urlopen("https://www.google.com")
print(my_web.read())

2. Использование метода POST

Если вам нужно отправить веб-форму, необходимо использовать не 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)

3. Создание веб-сервера

С помощью класса 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:

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

Что делать?

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

  1. Первым делом изучите основы. Узнайте, что такое переменные, управляющие структуры, структуры данных. Эти знания необходимы без привязки к конкретному языку.
  2. Займитесь изучением литературы. Начните с классики – Dive into Python . Эта книга вообще может стать настольной. Еще можно почитать Майкла Доусона «Программируем на Python » и Алексея Васильева «Python на примерах. Практический курс по программированию ». Доусон – опытный программист и преподаватель, а в книге учит программировать, создавая простые игры. В книге Васильева, напротив, больше внимания уделяется основам и теории.
  3. Практикуйтесь. Можно (и нужно) делать это параллельно с изучением теории. Пройдите курс Learn Python на Codecademy: вся необходимая для выполнения заданий теория подается прямо во время заданий. Как вариант, можно посетить Питонтьютор – бесплатный интерактивный курс по Python на русском.
    Также есть хорошие курсы на Stepik: , Python: основы и применение .
  4. Пройдите курс «Введение в компьютерные технологии и программирование на языке Python » от MIT.
  5. Узнайте, какие библиотеки и инструменты и для каких целей используют другие питонисты. Найдите что-то интересное для себя.
  6. Если вас интересуют веб-технологии, обратите внимание на фреймворки Flask и Django. Узнайте, для каких целей какой из них лучше подходит, начните изучать тот, что подходит вам.
  7. Узнайте, как получать и анализировать массивы данных с отдельных сайтов, со всего Интернета и вообще откуда угодно – только старайтесь держаться в рамках закона.
  8. Ищите информацию о методах машинного обучения.
  9. Оптимизируйте работу с инструментами, автоматизируйте рутину и все, что еще не автоматизировано.

Куда сходить?

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

Полезные ресурсы

Python Tutor

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

Bucky Roberts на YouTube

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

Derek Banas про Python на YouTube

Дерек – программист-самоучка, и у него свой взгляд на подход к изучению языков программирования. Он делает небольшие видеообзоры на различные языки длиной в 40-60 минут, в которых рассказывает все, что нужно, чтобы в общих чертах понять назначение языка.

Corey Schafer на YouTube

У Кори хорошие видео на тему форматирования строк, генераторов, программистских терминов (комбинации и перестановки, DRY, замыкания) и многого другого, что поможет понять основные концепции.

Django Getting Started

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

Введение во Flask

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

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

Learning Python , Mark Lutz (5th Edition)

Наиболее частый ответ на вопрос: «что почитать про Python?». Отличная книга, практически полное руководство по языку (и частично стандартной библиотеке). Из минусов - много воды, и последнее издание вышло 2 года назад (уже почти 3) и поэтому не включает последние изменения. Но для начинающих книга все еще актуальна.

Programming Python (4th Edition) , Mark Lutz

Переход от изучения к практике. Учимся применять полученные знания для написания будущих программ.

Think Python: How to Think Like a Computer Scientist , Allen B. Downey

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

Dive Into Python / , Mark Pilgrim

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



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: