Главная >> Программирование >> Основы программирования Python

Основы программирования Python

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

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

Содержание статьи:

Что такое Python?

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

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

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

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

  python

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

  python3

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

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

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

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

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

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

str = "Losst" * 2 print (str)

 

 

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

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

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

 

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

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

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

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

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

 

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

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

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

str = "Один два три" print(str[:2]) print(str[2:]) print(str[3:5]) 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=[1,2,3,4,5,6,7] 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')

Если file1 - символическая ссылка, операция копирования все равно создаст отдельный файл. Если вы хотите скопировать именно символическую ссылку используйте такую конструкцию:

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[0])

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

fd = open('file1.txt','w') content = fd.write('Новое содержимое')

 

И добавление в конец файла:

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

Сериализация позволяет сохранить объект в строку, для его последующего восстановления. Для этого используйте модуль pickle:

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

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

pop_serv.quit()

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 = 'me@example.com' to_addr = 'you@example.com' msg = 'From: me@example.com\r\nTo: you@example.com\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)

И не забудьте закрыть соединение:

conn.close()

Многопоточность

Как и большинство современных языков, 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:

×

Источник: likegeeks.com

Оцените статью

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (25 оценок, среднее: 4,40 из 5)
Загрузка...
Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

10 комментариев к “Основы программирования Python”

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

    Ответить
  2. Я канеш все понимаю, но то что вы делаете в примере с конкатенацией строк - это кошмар. За переопределение литерала конструктора в иных местах бьют ногами.
    Вот это: str = "welcome " + "to python" такой швах, что я прям и не знаю. Можно же выбрать другое имя переменной, а не трогать зарезервированные слова? Если потом попытаться вызвать конструктор для преобразования числа в строку (например str(123)) то будет TypeError.
    Пожалуйста, поправьте.

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

    Ответить
  4. Интересно почему в последнее время все кому не лень рекламируют Python. Зато нез
    аслуженно забыли такой замечательный язык как Perl. Он более соответствует Linux так как здесь собрано всё лучшее из bash sed awk c. И в отличии от Python котор
    ый ограничивает пользователя, в Perl имется множество способов что-то сделать, в Python только один. Да и код получается на порядок короче. Одна строка на Perl
    заменяет десятки на Python пример открыть файл perl -pE '' ваш_файл или perl -e '@lin=;print @lin' ваш_файл. Выполнить программу perl -e 'system (ваша любая программа)' и всё, а в Python надо импортировать класс os и использовать методы этого класса(их надо выучить или искать в справочниках).
    Вобщем Perl для лентяев. А Python для любителей стучать по клаве.

    Ответить
  5. Рад что Ваш ресурс затронул этот язык. Могли бы вы поподробнее разобрать работу пайтона с видеопотоками а конкретно с H.264, интересуют функции, переменные, в общем всё.
    Заранее спасибо.

    Ответить
  6. возможно это глупый вопрос но, что за дистрибутив. Или какой лучше дистрибутив использовать для python не щетая ubuntu, debian, fedora

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

      Ответить
  7. Python, без сомнения, синтаксический язык очень интересный..., но то, что Google заинтересовались python, при наличии более оптимизированных языков под определенные архитектуры (не говоря о кроссах)... похоже на рекламную акцию... популяризируют одно, сами используют другое! Для чего?! Для создания спроса на вычислительные ресурсы. В место повышения компьютерной грамотности, занимаются рекламой.. хотя под питон много библиотек..

    Ответить

Оставьте комментарий