🤯7👍3🤔3👀2❤1
Тут банально будет ошибка, потому что мы не можем складывать между собой множества.
Если бы мы хотели добавить элемент, мы бы писали a.add(1).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍6🔥3😁2
def square(x):
return x ** 2
square_lambda = lambda x: x ** 2
print(square(5)) # 25
print(square_lambda(5)) # 25
1.
map() — Применение функции к спискуnums = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, nums))
print(squared) # [1, 4, 9, 16]
2.
filter() — Фильтрация данныхeven = list(filter(lambda x: x % 2 == 0, nums))
print(even) # [2, 4]
3.
sorted() — Сортировка по ключуpairs = [(1, 'one'), (3, 'three'), (2, 'two')]
pairs.sort(key=lambda x: x[0])
print(pairs) # [(1, 'one'), (2, 'two'), (3, 'three')]
lambda?- Когда функция простая и короткая
- Когда она нужна один раз
lambda, если логика сложная – лучше писать def.Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🔥4
class NowMixin(object):
def now():
return datetime.datetime.utcnow()
now().Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤6🔥2
class Person:
def init(self, name):
self._name = name
@property
def name(self):
return self._name
p = Person("Alice")
print(p.name) # Alice (как атрибут, но с логикой)
- Позволяет использовать методы как атрибуты
- Защищает данные от прямого изменения
- Позволяет добавить логику без изменения интерфейса
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥3
import pyshorteners
s = pyshorteners.Shortener()
url = "https://example.com/your-long-link-here"
print(s.tinyurl.short(url))
# Вывод: https://tinyurl.com/2p6n3x6d
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥3
from githubkit import GitHub, Response
from githubkit.versions.latest.models import FullRepository
# Создаем объект GitHub, передав токен доступа
github = GitHub("<ваш_token_здесь>")
# Выполняем запрос к API GitHub для получения репозитория
resp: Response[FullRepository] = github.rest.repos.get("owner", "repo")
# Получаем данные о репозитории
repo: FullRepository = resp.parsed_data
# Выводим название репозитория
print(repo.full_name)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3
Что выдаст код выше❔
Anonymous Quiz
30%
[1], [2], [3], [4]
41%
[1], [1, 2], [3], [1, 2, 4]
13%
[1], [1,2], [3], [4]
15%
Error
❤5👍3🔥3
В Python аргументы по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.
Когда мы вызываем func(1) → список y создаётся один раз и сохраняется. В него добавляется 1. Результат: [1].
При вызове func(2) используется тот же самый список, в который уже добавлена 1. Теперь добавляется 2. Результат: [1, 2].
При вызове func(3, []) мы передаём новый пустой список вместо значения по умолчанию. В него добавляется 3. Результат: [3].
При вызове func(4) снова используется старый общий список, где уже [1, 2]. Добавляется 4. Результат: [1, 2, 4].
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍2
В Python для этого есть встроенный инструмент — argparse.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--name', required=True, help='Имя пользователя')
parser.add_argument('--age', type=int, help='Возраст')
args = parser.parse_args()
print(f"Привет, {args.name}! Тебе {args.age} лет.")
Запускаем в терминале:
python script.py --name Алиса --age 25
Вывод:
Привет, Алиса! Тебе 25 лет.
- Удобно передавать параметры
- Можно добавлять флаги, типы, help-сообщения
- Работает из коробки — без установки сторонних библиотек
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤3
class Person:
def init(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
p.city = "New York" # Можно добавить новый атрибут
class Person:
slots = ("name", "age") # Разрешены только эти атрибуты
def init(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
p.city = "New York" # ❌ AttributeError: 'Person' object has no attribute 'city'
- Экономит память (не создается
dict)- Ускоряет доступ к атрибутам
- Предотвращает создание лишних атрибутов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥3
Допустим, у нас есть список чисел, и мы хотим возвести каждое число в квадрат:
data = list(range(1_000_000))
squared = [x**2 for x in data] # Медленно!
Используем библиотеку NumPy, которая оптимизирована для работы с массивами:
import numpy as np
data_np = np.arange(1_000_000)
squared_np = data_np ** 2 # В десятки
Если ваш код обрабатывает большие объемы данных, замена циклов Python на операции с NumPy может ускорить выполнение в 10–100 раз! Это особенно важно в научных вычислениях, анализе данных и машинном обучении, где скорость обработки данных критична.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤6🔥3
Что выдаст код выше❔
Anonymous Quiz
73%
yh, nohtyp, ph
10%
yt, python, py
7%
yh, python, pn
11%
Error
👍7❤3🤔2🤓2
Разбор кода по шагам:
1. s[1:5:2]
Формат среза: [start:stop:step]
start = 1, stop = 5 (не включительно), step = 2
Берём символы с индексами 1 и 3:
s[1] = 'y'
s[3] = 'h'
Результат: 'yh'
2. s[::-1]
Шаг -1 → идём с конца к началу → переворачиваем строку полностью
'python' → 'nohtyp'
Результат: 'nohtyp'
3. s[::3]
Шаг 3, start и stop не указаны → берём от начала до конца, каждый 3-й символ
Индексы, которые берём: 0, 3
s[0] = 'p'
s[3] = 'h'
Результат: 'ph'
Итоговый вывод:
'yh', 'nohtyp', 'ph'
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5❤4
class CustomList:
def init(self, data):
self.data = data
def getitem(self, index):
return self.data[index] # Позволяет использовать obj[index]
nums = CustomList([10, 20, 30])
print(nums[1]) # 20
- Позволяет настроить доступ к элементам объекта.
- Делает объекты итерируемыми (например, в for-циклах).
- Помогает создавать свои структуры данных, работающие как списки или словари.
getitem делает объекты гибкими и удобными в использовании, улучшая читаемость кода!Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥2
from uscrapper import extract_tables
url = "https://en.wikipedia.org/wiki/List_of_countries_by_population"
tables = extract_tables(url)
# Первые 5 строк первой таблицы
print(tables[0].head())
Инструмент оснащен передовыми модулями обхода анти-парсинга и поддерживает технологии для извлечения информации из всех ссылок в пределах одного домена. Кроме того, в программе предусмотрена возможность создания отчета, содержащего все извлеченные данные.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🔥4
Если честно, меня бесят каналы, где непонятно кто учит программированию. На деле там копипаста с первой страницы гугла, которая грузит мозги.
Но есть и исключения. Например, канал @devsp. Его автор — ведущий разраб в области искусственного интеллекта. На минуточку, он приложил руку к самым нашумевшим нейронкам — Claude, Chat GPT и DeepSeek.
А теперь представьте, что мастодонт такого уровня ЛИЧНО делится внутрянкой своей работы и объясняет сложные концепции так, что поймёт даже отсталый двоечник.
Вещает про Data Science и машинное обучение с упором на практику (которой даже в платных курсах сильно не хватает).
Короче, если хотите быстро и без проблем расти в профессии — обязательно подпишитесь. Редко где найдешь такой баланс теории, подачи и практики: @devsp
Но есть и исключения. Например, канал @devsp. Его автор — ведущий разраб в области искусственного интеллекта. На минуточку, он приложил руку к самым нашумевшим нейронкам — Claude, Chat GPT и DeepSeek.
А теперь представьте, что мастодонт такого уровня ЛИЧНО делится внутрянкой своей работы и объясняет сложные концепции так, что поймёт даже отсталый двоечник.
Вещает про Data Science и машинное обучение с упором на практику (которой даже в платных курсах сильно не хватает).
Короче, если хотите быстро и без проблем расти в профессии — обязательно подпишитесь. Редко где найдешь такой баланс теории, подачи и практики: @devsp
❤4🤣2
Он предотвращает проблемы с управлением памятью и упрощает работу интерпретатора. Однако из-за него многопоточные программы не могут эффективно использовать несколько ядер процессора.
- В CPU-интенсивных задачах (например, обработка данных, вычисления) многопоточность не дает прироста производительности.
- В I/O-интенсивных задачах (сетевые запросы, работа с файлами) GIL почти не влияет, так как потоки могут освобождать блокировку во время ожидания операций ввода-вывода.
Если нужна настоящая параллельность, используйте многопроцессорность (
multiprocessing), которая запускает отдельные процессы без GIL, или попробуйте альтернативные реализации Python, такие как Jython или PyPy.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🔥3