26 сентября 2019 г.

Всем привет,

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

Регулярные выражения

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

[0-9]     or \d     - matches one digit
[0-9]+    or \d+    - one or more digits together
[0-9]*    or \d*    - zero or more digits together
[0-9].    or \d.    - one character after one digit together
[0-9]..   or \d..   - two characters after one digit together
[0-9]...  or \d...  - three characters after one digit together
[0-9].{n} or \d.{n} - n characters after one digit together
Similarly,
[a-z] - matches a to z
[A-Z] - matches A to Z
\w    - matches any letter of alphanumeric type
\W    - matches any letter of non-alphanumeric type
\s    - matches one empty space
Use of +,*,.,{} are also valid in the above sequences.
Examples:
\d{10}  - Exactly 10 numbers together will be matched
\d{12,} - 12 or more numbers will be matched

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

[a-zA-Z0-9._-]+\@[a-zA-Z0-9]\.[a-zA-Z_.]

Группировка регулярных выражений

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

Например, если вы хотите сопоставить URL-адрес, например

https://www.google.com/search/Python-3
http://yahoo.co.in
www.google.com

Шаблон регулярного выражения

(https[s]?://)?(www\.)?([a-zA-Z0-9_-])+\.([a-zA-Z0-9\.])+

В случае кода python3 структура будет следующей

import re   #for regular expressions
regex = re.compile(r" <Enter your regex here> ")
matches = regex.search(" <Enter the string in which expression has to be matched> ")
print(matches.group())

Итераторы и генераторы

Итераторы и итераторы

Итерируемые объекты — это объекты, которые можно перебирать. Он генерирует итератор при передаче через функцию iter().

Итераторы — это объекты, которые используются для перебора итерируемого объекта с помощью функции next(). У итераторов есть метод __next__(), который возвращает следующий элемент объекта.

Итерация экономит место в памяти, в отличие от использования циклов for при обходе в итерации.

Генераторы

Генераторы — это функции, которые вместо одного значения могут возвращать несколько значений с помощью циклов. Здесь вместо ключевого слова return можно использовать yield, так как оно не выводит вас из программы. Yield просто возвращает значение, приостанавливая выполнение. Это также изменяет значение на следующее значение.

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

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

Параметры в функции

  1. Параметры по умолчанию. Пример: функция определения (a = 10, b = 10):
  2. Справочные параметры. Пример: функция определения (а, б):
  3. Специфические параметры ключевого слова. Пример: функция определения (int, str):
  4. Параметры переменной длины. Пример: функция защиты (algs, *kwrgs):

Анонимные функции (лямбда-функции)

Синтаксис

x = lambda arg1, arg2, …, argn : expression

Ex:

sum = lambda a,b:a+b
print(sum(1,2))

выходы

3

Объектно-ориентированное программирование

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

Есть 4 основные особенности, связанные с ООП:

  1. Инкапсуляция
  2. Абстракция
  3. Наследование
  4. Полиморфизм

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

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

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

Полиморфизм представляет собой способность демонстрировать различное поведение в зависимости от природы, но реализация остается неизменной.

Класс

Синтаксис

class ClassName:
    <attributes>
    <functions>
object = ClassName()
object_new = ClassName()

self : позволяет получить доступ к вашим переменным вне класса. Объект неявно передается при вызове функции, имеющей self.

Конструкторы: помогают инициализировать переменные экземпляра.

Синтаксис:

def __init__(self, arg):
    self.variable = arg

Статические переменные: значение статической переменной остается одинаковым для всех экземпляров классов.

Модульное программирование

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

Модули: Модули представляют собой набор функций.

Синтаксис

from module_name import f1, f2, f3, ...#selectively import functions
#or
from module_name import *#import all the functions under module_name

Пакеты. Пакеты — это набор модулей, у которых есть собственный метод __init__(). С ним также связан файл setup.py для установки в новую систему.

Обработка исключений

В основном в программировании наблюдаются два типа ошибок, а именно ошибки времени компиляции и ошибки времени выполнения. Ошибки времени выполнения называются исключениями.

Синтаксис

try:
    <any code that would throw an exception>
    <ex: divide by 0>
except Exception:
    print("<your message>")
else:
    <if no exceptions, this part is run>
finally:
    <no matter if there are exceptions or not in either try or except, this part will run>

Дата и время

Вот некоторые из важных команд, связанных с библиотекой datetime:

import datetime   - imports the module
datetime.date(yyyy,m,d) - do not prefix month and day with 0
dt = datetime.date.today() - today's date will be stored
dt.weekday() - prints the day index
dt.isoweekday() - prints the day number
ddelta = datetime.timedelta(days=7) - a difference of 7 days will be calculated and stored
next_week = dt+ddelta - next week same day will be stored

datetime.datetime.today() и datetime.datetime.now() выводят аналогичные значения, то есть текущую дату и время. Однако разница между ними заключается в том, что today() использует ваш локальный часовой пояс, а now() принимает аргумент часового пояса.

Для работы с часовыми поясами рекомендуется использовать библиотеку pytz, доступ к которой можно получить через

import pytz
strftime() - used as string format time to print in a particular format.
strptime() - used as string pass time to input in a particular format.

Существует два типа даты и времени:

  1. Наивно: нет информации о часовом поясе.
  2. Осведомлен: имеет информацию о часовом поясе.

Работа с JSON-файлами

JSON — нотация объекта Javascript

Веб-приложения и мобильные приложения получают данные из таких источников, как базы данных, API и другие веб-сайты, в форме XnY, объектов и JSON.

Формат JSON похож на словарь в python.

Травление: травление — это другое название процесса приведения типов.

Сбор и распаковка файлов JSON выполняется с помощью специальных методов, называемых load() и dump() в python.

json.loads() - a json string is converted to a dictionary
json.dumps() - a dictionary is converted to a json string
json.load()  - a json file is converted to dictionary
json.dump()  - a dictionary is dumped into a json file

Работа с файлами

Менеджер контекста

with open("test.txt", 'r') as file:
    <body>

После выхода из блока мой файл будет закрыт.

В случае больших файлов используйте

file.readlines() - gives an iterator of list of lines

Это все по темам, затронутым в предыдущие дни.

Отписка на сегодня.