Программирование на python для начинающих. Просмотр информации об объекте. Генерация случайных чисел

Язык Python имеет много общего с Perl, C и Java. Тем не менее, есть определенные различия между языками.

Первая программа Python

Давайте выполнять программы в различных режимах программирования.

Интерактивный режим программирования

Вызов переводчика без прохождения файла сценария в качестве параметра вызывает следующую строку -

Почти весь синтаксис очень похож на «реальные» слова. Ключевые слова очень знакомы любому не-программисту, поэтому новички могут легко подобрать язык без особых трудностей. Эффективность означает все на новый язык программирования. Благодаря этим встроенным методам и классам простые задачи легко выполняются систематически, не мешая приложению. За последние четыре или шесть лет в отрасли наблюдается потребность в высокомасштабируемых методологиях. Когда клиент требует большой объем разработки для программного приложения, которое не требуется для завершения проекта, приложение может быть перемещено в любой момент процесса разработки, заполнив определенное количество модулей приложения.

$ python Python 3.3.2 (default, Dec 10 2013, 11:35:01) on Linux Type "help", "copyright", "credits", or "license" for more information. >>> On Windows: Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) on win32 Type "copyright", "credits" or "license()" for more information. >>>

Введите следующий текст в командной строке Python и нажмите Enter:

>>> print ("Hello, Python!")

Если вы работаете в старой версии Python (Python 2.x) , использование скобок, как в print функции не является обязательным.

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

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

Hello, Python!

Режим программирования Script

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

Напишем простую программу на Python в сценарии. Файлы Python имеют расширение .py . Введите следующий исходный код в файле test.py:

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

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

Print ("Hello, Python!")

Мы предполагаем, что у вас есть Python интерпретатор набор в переменной PATH. Теперь попробуйте запустить эту программу следующим образом -

В Linux $ python test.py

Это приводит к следующему результату:

Привет, Python! на ОС Windows C:\Python34>Python test.py

Это приводит к следующему результату:

Привет, Python!

Давайте попробуем другой способ выполнить сценарий Python в Linux. Вот измененный файл test.py -

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

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

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

Мы предполагаем, что у вас есть интерпретатор Python доступны в / USR каталог / бен. Теперь попробуйте запустить эту программу следующим образом -

$ chmod +x test.py # This is to make file executable $./test.py

Это дает следующий результат -

Привет, Python!

Python Идентификаторы

Идентификатор Python, это имя используется для идентификации переменного, функции, класса, модуля или другого объекта. Идентификатор начинается с буквы от А до Z или к г или подчеркивание (_) следуют ноль или более букв, подчеркивания и цифры (0 to 9) от (0 to 9) .

Базовое понимание концепций программирования, алгоритмов и средств разработки. . Урок 2: Структура и модель программы. Урок 3: Обработка текста и файлы Чтобы сделать что-нибудь полезное, вы должны иметь возможность читать данные в своей программе. В уроке 3 рассматривается проблема чтения данных из файла, основных методов манипулирования текстовыми строками, преобразования входных данных и выполнения вычислений.

Урок 4: Функции и обработка ошибок. Когда вы пишете более крупные программы, вы захотите организоваться. И если вы пишете функции, вы захотите, чтобы они хорошо играли с другими. В уроке 4 рассматривается проблема написания определений функций, обработки исключений и методов кодирования, которые помогут вам при создании больших программ. Урок 5: Структуры данных и манипулирование данными. Урок 5 включает в себя способ чтения файла в полезную структуру данных. Затем он исследует различные способы выполнения расчетов по данным, включая сокращение данных, фильтрацию, объединение и сортировку.

Python не разрешает символы пунктуации, такие как @, $ и% в пределах идентификаторов. Python является чувствительно к регистру языка программирования. Таким образом, Manpower и manpower два различных идентификаторов в Python.

Вот именования для идентификаторов Python -

    Имена классов начинаются с прописной буквы. Все остальные идентификаторы начинаются с буквы нижнего регистра.

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

    Урок завершается обсуждением организации более крупных баз кода в пакетах. Вы видите это, когда используете встроенные типы и выполняете методы в результирующих экземплярах. Если вы хотите создать свои собственные объекты, вы можете сделать это с помощью инструкции класса. Класс часто является удобным способом определения структуры данных и приложением методов, которые выполняют операции с данными. Урок 7 охватывает основы определения нового объекта, создания экземпляров и манипулирования объектами.

    Начиная идентификатор с одной ведущей подчеркиванием означает, что идентификатор является частным.

    Начиная идентификатор с двумя ведущими подчеркиванием указывает на сильно частный идентификатор.

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

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

    Обычно это делается путем добавления специальных или «магических» методов в ваш класс. Урок 9 демонстрирует некоторые общие настройки, которые создаются для объектов, чтобы упростить отладку, создавать контейнеры и управлять ресурсами. Хотя этот раздел не охватывает все возможные настройки, которые могут быть выполнены, он дает вам представление о том, что возможно, и основа для дальнейшего исследования. Урок 10: Инкапсуляция. Основные проблемы, возникающие в более крупных программах, - это инкапсуляция внутренних деталей реализации и способы более эффективного управления тем, как разработчики взаимодействуют с объектами.

Зарезервированные слова

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

and exec Not
as finally or
assert for pass
break from print
class global raise
continue if return
def import try
del in while
elif is with
else lambda yield
except

Линии и отступы

Python не использует braces({}) для обозначения блоков кода для определения классов и функций или управления потоком. Блоки кода обозначаются линии отступа, который жестко соблюдается.

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

Особое внимание уделяется закрытию как инструменту для генерации и упрощения кода. Урок 12: Метапрограммирование и декораторы Одна из самых сложных проблем при разработке более крупных программ - это очень повторяющийся код. Например, в качестве общего правила вы хотите избежать ситуаций, когда вы разрезаете и вставляете общие фрагменты кода между функциями или файлами. Реструктуризация дизайна вашей программы может помочь решить такие проблемы. Однако другой общей методикой является инкапсуляция общих кодовых задач в декоратор.

Количество пробелов в отступе является переменным, но все операторы внутри блока должны быть отступ той же сумму. Например -

If True: print ("True") else: print ("False")

Тем не менее, следующий блок генерирует ошибку -

If True: print ("Answer") print ("True") else: print "(Answer") print ("False")

Таким образом, в Python все сплошные линии с отступом с таким же числом пробелов бы сформировать блок. Следующий пример имеет различные операторные блоки -

В уроке 12 описывается, как писать декораторы для обработки как определения функций, так и классов. Урок 13: Метаклассы Одной из проблем, с которыми сталкиваются создатели крупных приложений и структур, является контроль над большей средой программирования. Код часто организуется с использованием классов, но иногда их гораздо больше, чем просто определения классов. Например, классы, возможно, должны зарегистрировать свое существование с какой-то другой частью структуры. Или, возможно, определение класса слишком многословно и должно быть каким-то образом упрощено.

Note: Не пытайтесь понять логику в данный момент времени. Просто убедитесь, что вы поняли различные блоки, даже если они без скобок.

#!/usr/bin/python3 import sys try: # open file stream file = open(file_name, "w") except IOError: print ("There was an error writing to", file_name) sys.exit() print ("Enter "", file_finish,) print "" When finished" while file_text != file_finish: file_text = raw_input("Enter text: ") if file_text == file_finish: # close the file file.close break file.write(file_text) file.write("\n") file.close() file_name = input("Enter filename: ") if len(file_name) == 0: print ("Next time please enter something") sys.exit() try: file = open(file_name, "r") except IOError: print ("There was an error reading file") sys.exit() file_text = file.read() file.close() print (file_text)

Или, возможно, нужно управлять каким-либо другим аспектом классов. Передовой метод решения этих проблем - использование метакласса. В уроке 13 представлена ​​концепция метакласса, и некоторые практические приложения показаны. Он также используется во множестве связанных функций, таких как понимание списков. Одна из самых мощных возможностей итерации заключается в том, что ее можно легко настроить.

Урок 14 начинается с протокола итерации и как его настроить с помощью функций генератора. В нем также описывается, как применять итерацию к конвейеру обработки данных, особенно мощный метод работы с данными и проблемы, связанные с рабочими процессами. Однако под обложками они управляются под наблюдением менеджера, который координирует их выполнение. В уроке 15 представлены сопрограммы и показано, как их можно использовать для реализации простой сетевой службы, которая может обрабатывать тысячи одновременных клиентских подключений.

Multi-Line Заявления

Заявления в Python обычно заканчиваются с новой строки. Python, тем не менее, позволяют использовать символ продолжения строки (\) , чтобы обозначить, что линия должна быть продолжена. Например -

Total = item_one + \ item_two + \ item_three

Заявления, содержащиеся внутри , {}, или () скобки не нужно использовать символ продолжения строки. Например -

Days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]

Цитата в Python

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

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

Word = "word" sentence = "This is a sentence." paragraph = """This is a paragraph. It is made up of multiple lines and sentences."""

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:



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

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

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