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

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

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
🔮 В мире 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, и не используйте такие имена для своих собственных переменных, чтобы избежать конфликтов и неожиданного поведения
🔎Иногда, при разработке программного обеспечения на 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 раз и выводим результат