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

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

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

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

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

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

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

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

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

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

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

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

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

❗️Рекомендуется использовать двойное подчеркивание только для специальных методов и атрибутов, имеющих специальное значение в языке Python, и избегать использования таких имен для пользовательских переменных, чтобы избежать конфликтов и непредсказуемого поведения.
🔮 В мире Python существует функция str.join(), которая действительно похожа на волшебную палочку, объединяющую слова, фразы или элементы списка в одну большую строку.

Представьте себе, что вы устраиваете вечеринку и хотите собрать всех друзей в круг. str.join() — это как магия, которая собирает всех вместе!

🔮 Давайте посмотрим, как это работает на практике:

# Допустим, у нас есть список слов
words = ["Привет", "мир", "я", "Python"]

# И мы хотим объединить их в предложение
sentence = ' '.join(words)
print(sentence)


🔝 В результате этого кода мы получим строку: "Привет мир я Python".

🔮 Как это работает?

join() берет список (в нашем случае words) и использует пробел ' ' в качестве "клея", чтобы соединить все слова в одну строку. Таким образом, каждый элемент списка становится частью большой строки, разделенной пробелами или любым другим символом, который мы укажем перед join().

🔮 Еще один пример:

users = ["RimMirK", "Anuke", "compuser"]

result = ', '.join(users)
print(result) # "RimMirK, Anuke, compuser"


🔝 Здесь мы соединили пользователей через запятую.

Таким образом, функция str.join() предоставляет удобный способ объединения элементов списка в одну строку, используя указанный разделитель.
разница между методами str и repr ?
Спросят с вероятностью 3%

Метод str:
- Цель: Возвращает строковое представление объекта, понятное и удобное для пользователя.
- Использование: Вызывается функцией str() и при использовании print().
- Предназначение: Для более дружественного и читаемого представления объекта.

Метод repr:
- Цель: Возвращает строку, представляющую объект официально и, по возможности, позволяющую воссоздать объект при передаче этой строки в eval().
- Использование: Вызывается функцией repr() и отображается интерактивной оболочкой Python для представления объектов.
- Предназначение: Для более точного и детализированного представления объекта, предназначенного для разработчиков.

Основные различия:
1. Контекст использования:
- str предназначен для удобного представления объекта пользователю.
- repr предназначен для официального представления объекта, полезного для отладки и разработки.

2. Вызываемые функции:
- str() и print() используют str.
- repr() и интерактивная оболочка Python используют repr.

3. Содержимое строки:
- str возвращает удобочитаемую строку.
- repr возвращает строку, которая может содержать больше технической информации и может использоваться для воссоздания объекта.

Примеры реализации обоих методов:

class Point:
def init(self, x, y):
self.x = x
self.y = y

def str(self):
return f"Point({self.x}, {self.y})"

def repr(self):
return f"Point({self.x}, {self.y})"

p = Point(1, 2)

# Использование str

print(str(p))  # Выведет: Point(1, 2)
print(p) # Выведет: Point(1, 2)

# Использование

 repr

print(repr(p)) # Выведет: Point(1, 2)


Таким образом, метод str возвращает понятное для пользователя строковое представление объекта, используемое функцией str() и print(), в то время как метод repr возвращает официальное строковое представление объекта, используемое функцией repr() и интерактивной оболочкой Python, и часто предназначен для отладки.
🖥 Что означает some-variable ?

Двойное подчеркивание перед и после имени переменной в Python называется "dunder" (Double underscore) и используется для специальных методов и атрибутов, которые могут быть вызваны автоматически. Например, init - это специальный метод, который вызывается при создании экземпляра класса. Другие примеры включают str, len, call, iter, и так далее.

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

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

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

Обычно используйте двойное подчеркивание только для специальных методов и атрибутов, которые имеют специальный смысл в языке Python, и не используйте такие имена для своих собственных переменных, чтобы избежать конфликтов и неожиданного поведения
👍4
🔎Иногда, при разработке программного обеспечения на Python, мы можем столкнуться с ситуациями, когда необходимо явно указать на наличие ошибки.

➡️Когда мы пишем программы, мы стараемся их делать максимально надежными и безопасными. Однако, иногда может возникнуть ситуация, когда мы хотим явно указать на наличие проблемы. Например, если в функции передаются некорректные аргументы или программа не может продолжить выполнение из-за некорректного состояния

➡️Использование оператора raise

Оператор raise в Python позволяет нам создавать исключения вручную. Мы можем указать тип исключения и дополнительное сообщение, которое будет содержаться в исключении.

➡️Вот пример использования оператора raise:

def divide_numbers(a, b):
if b == 0:
raise ValueError("Делитель не может быть нулем")
return a / b

try:
result = divide_numbers(10, 0)
print("Результат:", result)
except ValueError as e:
print("Ошибка:", str(e))
✈️Модуль timeit в Python используется для измерения времени выполнения вашего кода. У него есть как интерфейс командной строки, так и вызываемый интерфейс. Модуль выполнит оператор определенное количество раз (по умолчанию - один миллион) и затем вернет время, затраченное на выполнение. Вот простой пример:

import timeit
print(timeit.timeit('"-".join(str(n) for n in range(100))', number=10000))


⬆️Этот код выполнит оператор "-".join(str(n) for n in range(100)) 10 000 раз и выведет затраченное на это время.

➡️Использование Timeit с функциями

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

import timeit
def my_function():
return "-".join(str(n) for n in range(100))
print(timeit.timeit(my_function, number=10000))


⬆️В этом примере мы сначала определяем функцию с именем my_function. Затем мы измеряем время выполнения этой функции 10 000 раз и выводим результат
В Python typer — это современная и удобная библиотека для создания CLI-приложений (интерфейсов командной строки).

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

пример использования typer:

import typer

app = typer.Typer()

@app.command()
def hello(name: str):
"""
Простое приветствие.
"""
print(f"Привет, {name}!")

@app.command()
def goodbye(name: str, formal: bool = False):
"""
Прощание. Можно сделать формальным.
"""
if formal:
print(f"До свидания, {name}!")
else:
print(f"Пока, {name}!")

if name == "main":
app()


⬆️ В этом примере показано создание простого CLI-приложения с двумя командами: "hello" и "goodbye". Команда "hello" принимает один аргумент — имя, и выводит приветствие. Команда "goodbye" принимает имя и опциональный аргумент "formal", который определяет, будет ли прощание формальным.