🐍 Укус питона 🐍
3.02K subscribers
577 photos
2 videos
272 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Преобразование типов

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

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

При явном преобразовании программист сам меняет тип данных, на требуемый, явно указывая тип с помощью функций str, int и float. Во втором примере мы преобразовываем строку в число с помощью функции int.

🐍 Укус питона // 💬 Чат // #типы_данных #строки #числа
Функция isinstance

Функция isinstance, принимает в качестве аргументов объект и класс/кортеж с классами или с версии Python 3.10 может быть объединением нескольких типов (например int | str).

Возвращает True, если проверяемый объект является экземпляром указанного класса (классов) или его подкласса (прямого, косвенного или виртуального), иначе False.

В первом примере: 1 является экземпляром класса int, поэтому возвращает True.
Во втором примере: "текст" не является экземпляром класса int, поэтому False.
В третьем примере: "текст" является экземпляром класса str который в аргументе был объединён с классом int, а следовательно True.

🐍 Укус питона // 💬 Чат // #теория #функции #isinstance
Методы __repr__ и __str__

Метод __repr__ выдает текстовое или строковое представление сущности или объекта. Этот процесс вызывается всякий раз при вызове функции repr для какой-то сущности.

Метод __str__ делает то же самое, но ее поведение всё же немного отличается. Она предназначена для создания удобочитаемой версии, полезной для отслеживания или отображения информации об объекте. А метод __repr__ предназначен для предоставления «официального» текстового образа объекта, который можно использовать для воссоздания этого объекта.

🐍 Укус питона // 💬 Чат // #теория #функции #методы #__repr__ #__str__
Поиск в строке

Для поиска подстроки в строке в Python применяется метод find(), который возвращает индекс первого вхождения подстроки в строку и имеет три формы:

• find(str): поиск подстроки str ведется с начала строки до ее конца
• find(str, start): параметр start задает начальный индекс, с которого будет производиться поиск
• find(str, start, end): параметр end задает конечный индекс, до которого будет идти поиск

Если подстрока не найдена, метод возвращает -1, смотрим код:

🐍 Укус питона // 💬 Чат // #теория #строки
Объединение строк

Одной из самых распространенных операций со строками является их объединение или конкатенация. Для объединения строк применяется операция сложения, первый пример 👀:

С объединением двух строк все просто, но что, если нам надо сложить строку и число? В этом случае необходимо привести число к строке с помощью функции str(), внимание на второй пример:

🐍 Укус питона // 💬 Чат // #теория #строки
Явные преобразования

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

Мы ожидаем, что "2" + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И мы увидим при выполнении кода что-то наподобие примера во второй части кода:

Для преобразования типов Python предоставляет ряд встроенных функций:
• int(): преобразует значение в целое число
• float(): преобразует значение в число с плавающей точкой
str(): преобразует значение в строку

🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #int #float #str
Str

Функция str() преобразует значение в строку, первый пример:

Функция str() может быть актуальна, например, при добавлении к строке значения другого типа. Например, в следующем случае мы получим ошибку, вторая часть кода:

Если число складывается с число, то это стандартная операция сложения чисел. Если строка складывается со строкой, то это операция объединения строк. Но каким образом выполнить операцию сложения по отношение к строке и числу, Python не знает. И если мы в данном случае мы хотим выполнить операцию объединения строк, то число можно привести к строке с помощью функции str(), третья часть кода:

🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #str
Класс object. Строковое представление объекта

Начиная с 3-й версии в языке программирования Python все классы неявно имеют один общий суперкласс - object и все классы по умолчанию наследуют его методы.

Одним из наиболее используемых методов класса object является метод str(). Когда необходимо получить строковое представление объекта или вывести объект в виде строки, то Python как раз вызывает этот метод. И при определении класса хорошей практикой считается переопределение этого метода.

К примеру, возьмем класс Person и выведем его строковое представление, смотрим пример:

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

Это не очень информативная информация об объекте. Мы, конечно, можем выйти из положения, определив в классе Person дополнительный метод, который выводит данные объекта - в примере выше это метод display_info.

🐍 Укус питона // 💬 Чат // #теория #классы #object
Класс object. Строковое представление. Продолжение.

Рассмотрим другой выход решения проблемы недостаточной информации об объекте - определим в классе Person метод str() (по два подчеркивания с каждой стороны), смотрим код:

Метод str должен возвращать строку. И в данном случае мы возвращаем базовую информацию о человеке. Если нам потребуется использовать эту информацию в других методах класса, то мы можем использовать выражение self.str()

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

🐍 Укус питона // 💬 Чат // #теория #классы #object
Модуль locale. Продолжение.

Непосредственно для форматирования чисел и валют модуль locale предоставляет две функции:
• currency(num): форматирует валюту
• format_string(str, num): подставляет число num вместо плейсхолдера в строку str

Применяются следующие плейсхолдеры:
• d: для целых чисел
• f: для чисел с плавающей точкой
• e: для экспоненциальной записи чисел

Перед каждым плейсхолдером ставится знак процента %, например, первый пример:

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

🐍 Укус питона // 💬 Чат // #теория #модули #locale
Каков тип следующей переменной?
Anonymous Quiz
5%
list
32%
tuple
4%
array
59%
str
Основные методы строк.

Рассмотрим основные методы строк, которые мы можем применить в приложениях:
• isalpha(): возвращает True, если строка состоит только из алфавитных символов
islower(): возвращает True, если строка состоит только из символов в нижнем регистре
• isupper(): возвращает True, если все символы строки в верхнем регистре
• isdigit(): возвращает True, если все символы строки - цифры
• isnumeric(): возвращает True, если строка представляет собой число
• startswith(str): возвращает True, если строка начинается с подстроки str

Например, если мы ожидаем ввод с клавиатуры числа, то перед преобразованием введенной строки в число можно проверить, с помощью метода isnumeric() введено ли в действительности число, и если так, то выполнить операцию преобразования:

🐍 Укус питона // 💬 Чат // #теория #строки #методы
Основные методы строк.

• endswith(str): возвращает True, если строка заканчивается на подстроку str
• lower(): переводит строку в нижний регистр
• upper(): переводит строку в вехний регистр
• title(): начальные символы всех слов в строке переводятся в верхний регистр
• capitalize(): переводит в верхний регистр первую букву только самого первого слова строки
• lstrip(): удаляет начальные пробелы из строки
• rstrip(): удаляет конечные пробелы из строки
• strip(): удаляет начальные и конечные пробелы из строки
ljust(width): если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю
• rjust(width): если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю

Проверка, начинается или оканчивается строка на определенную подстроку:

🐍 Укус питона // 💬 Чат // #теория #строки #методы
Основные методы строк. Продолжение.

• center(width): если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру
• find(str[, start [, end]): возвращает индекс подстроки в строке. Если подстрока не найдена, возвращается число -1
• replace(old, new[, num]): заменяет в строке одну подстроку на другую
• split([delimeter[, num]]): разбивает строку на подстроки в зависимости от разделителя
• partition(delimeter): разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов - подстрока до разделителя, разделитель и подстрока после разделителя
• join(strs): объединяет строки в одну строку, вставляя между ними определенный разделитель

Удаление пробелов в начале и в конце строки:

🐍 Укус питона // 💬 Чат // #теория #строки #методы
Текстовые файлы. Запись в текстовый файл.

Чтобы открыть текстовый файл на запись, необходимо применить режим w (перезапись), a(дозапись) или r+/w+ (чтение и запись) . Затем для записи применяется метод write(str), в который передается записываемая строка. Стоит отметить, что записывается именно строка, поэтому, если нужно записать числа, данные других типов, то их предварительно нужно конвертировать в строку.

Запишем некоторую информацию в файл "hello.txt":

Если мы откроем папку, в которой находится текущий скрипт Python, то увидем там файл "hello.txt". Этот файл можно открыть в любом текстовом редакторе и при желании изменить.

🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Создание и удаление объектов

Любое описание объекта в объектно-ориентированном программировании начинается с создания объекта и его удаления.

Метод new(cls[, ...]) в Python используется для создания типа класса. Он принимает тип класса в качестве первого аргумента и, обычно, возвращает этот же тип. Этот метод часто применяется для настройки создания экземпляров классов, особенно тех, которые наследуются от неизменяемых типов, таких как int, str или tuple.

init(self[, ...]) — конструктор класса. Используется при определении объектов.

init_subclass(cls) — позволяет переопределить создание подклассов объекта.

🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Что выведет код?
Anonymous Quiz
30%
<class 'str'>
43%
<class 'bytes'>
9%
0
18%
Ошибку
🖥 Что представляет собой some-variable ?

👉 В Python двойное подчеркивание перед и после имени переменной называется "dunder" (Double underscore) и применяется для специальных методов и атрибутов, которые могут быть вызваны автоматически.

⬆️ Например, init - это специальный метод, который вызывается при создании экземпляра класса. Другие примеры включают str, len, call, iter и многие другие.

👉 Также используются "dunder" атрибуты, такие как name, module, doc, file, dict, class, all и другие, которые предоставляют информацию о модуле, классе, функции или другом объекте.

Значение, которое присваивается такой переменной, зависит от контекста использования.

⬆️ Например, name - это специальный атрибут, который хранит имя текущего модуля.

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