Python | Rumpy


Гео и язык канала: Украина, Украинский
Категория: Технологии


👨‍💻 Канал про різні айті проекти, корисні поради розробникам та можливості заробітку.
Для друга:
https://t.me/+KffOzVUKJHEwOTRi
По всім питанням: @zhenya_glow

Связанные каналы

Гео и язык канала
Украина, Украинский
Категория
Технологии
Статистика
Фильтр публикаций


💌 Власні спливаючі повідомлення на Python

❓ Хочете надсилати власні спливаючі повідомлення? З допомогою plyer можна швидко створити власні сповіщення які працюють на всіх ОС.

📸 На даному фото реалізована проста програма, яка надсилає спливаюче сповіщення.

🔧 Що вміє Plyer?

➖ Надсилати спливаючі сповіщення.
➖ Керувати буфером обміну (копіювати й вставляти текст).
➖ Відстежувати стан батареї.
➖ Працювати з камерою.
➖ Виконувати інші функції операційної системи.

🚀 Rumpy | 🖥 YouTube | 💬 Чат

782 0 27 6 30

🖱 Автоклікер на Python

😂 Набридло тисячу разів клікати тапалки? В даному прикладі реалізовано простий автоклікер, який імітує натискання миші.

💡 Встановлення:
pip install pyautogui

🎮 Використання:
1. Запускаєте скрипт
2. Наводите курсор куди треба
3. Насолоджуєтесь автоматичними кліками
4. Ctrl+C для зупинки

🚀 Rumpy | 🖥 YouTube | 💬 Чат


🤷‍♀️ Яка різниця між ітератором і генератором?

Ітератори та генератори — це способи перебору даних в Python. Вони мають схожі функції, але працюють по-різному.

🔄 Ітератор

Ітератор — це об'єкт з методами __iter__ та __next__, створюється вручну. Можна контролювати логіку перебору. (приклад на картинці)

⚙️ Генератор

Генератор — це спрощений спосіб створення ітератора. Замість __iter__ і __next__, використовується ключове слово yield, яке автоматично зупиняє виконання і повертає значення, поки цикл не завершиться. (приклад на картинці)

⏩ Отже, ітератор потребує вручну прописати __iter__ та __next__, а генератор це автоматизує за допомогою yield.

🚀 Rumpy | 🖥 YouTube | 💬 Чат


🧹 Принцип DRY

DRY — це один із ключових принципів програмування, який закликає уникати дублювання коду. Основна ідея: Don't Repeat Yourself (Не повторюй себе) .

🤔 Чому варто використовувати DRY?

1. Код стає більш приємний оку, бо зменшується обсяг коду.
2. Спрощується підтримка.
3. Зменшується ймовірність помилок.

Приклад без DRY:

def greet_john():
print("Привіт, John!")
print("Гарного дня!")
print("До зустрічі!")

def greet_mary():
print("Привіт, Mary!")
print("Гарного дня!")
print("До зустрічі!")

Поганий приклад - кожна функція містить однаковий код, що ускладнює підтримку.

Приклад із DRY:

def greet(name):
print(f"Привіт, {name}!")
print("Гарного дня!")
print("До зустрічі!")

Хороший приклад - одна функція обробляє всі привітання через параметр name.

🚀 Rumpy | 🖥 YouTube | 💬 Чат


⏱️ Моніторинг продуктивності з WakaTime

WakaTime — це інструмент для розробників, який допомагає зрозуміти скільки часу ти реально кодив, а скільки страдав фігньой. 😅

Ключові можливості:
➖ Детальна статистика продуктивності
➖ Підтримка VS Code, PyCharm, Sublime та інших IDE
➖ Щоденні, тижневі та місячні звіти
➖ Відстеження проектів та файлів
➖ Інтеграція з GitHub

📈 Чому це корисно?

WakaTime допомагає визначити, на що витрачається твій час та побачити, які технології ти використовуєш найчастіше. Це особливо корисно для саморозвитку та відстеження власного прогресу.

🚀 Rumpy | 🖥 YouTube | 💬 Чат


🖼 Видалення фону зображення на Python

Іноді потрібно видалити фон зображення, щоб отримати прозору картинку. Це можна зробити з допомогою бібліотеки rembg, яка автоматично видаляє фон з допомогою ШІ!


from rembg import remove
from PIL import Image

input_path = 'img.png'
output_path = 'img_output.png'

img = Image.open(input_path)
result = remove(img)
result.save(output_path)

🚀 Rumpy | 🖥 YouTube | 💬 Чат


😱 Які існують типи даних в Python?

➿➿➿➿➿➿➿

🕷 Типи даних поділяються на:

ЗМІННІ та НЕЗМІННІ

➿➿➿➿➿➿➿

🎩 Незмінні типи даних (Immutable)

int — цілі числа (наприклад, 5, -10)
float — дробові числа (наприклад, 3.14, -0.1)
bool — логічні значення (True, False)
str — рядки (наприклад, "Hello")
tuple — кортежі, що зберігають послідовність даних, яку не можна змінювати (наприклад, (1, 2, 3))
frozenset — незмінні множини, що містять унікальні елементи

🐈‍⬛ Змінні типи даних (Mutable)

list — списки, які можна редагувати, додавати або видаляти елементи (наприклад, [1, 2, 3])
dict — словники, які зберігають пари "ключ-значення" (наприклад, {"name": "Alice", "age": 25})
set — множини, що містять унікальні значення і допускають зміну (наприклад, {1, 2, 3})

В чому різниця?

Різниця між змінними та незмінними типами даних пов'язана з тим, як вони зберігаються та працюють у пам'яті.


👈 Незмінні типи (Immutable): коли ви змінюєте значення, Python створює новий об'єкт із новим місцем у пам'яті, залишаючи старий об'єкт без змін.

text = "Hello"
print(id(text)) # ID першого об'єкта
text += " World"
print(id(text)) # ID нового об'єкта, який відрізняється від першого

👋 Змінні типи (Mutable): Змінні типи, як-от списки та словники, можна змінювати прямо в тому ж місці в пам'яті. Якщо додати або змінити елемент у списку, Python просто оновлює дані без створення нового об'єкта.

my_list = [1, 2, 3]
print(id(my_list)) # ID початкового списку
my_list.append(4)
print(id(my_list)) # ID той самий, список змінився на місці

🚀 Rumpy | 🖥 YouTube | 💬 Чат


😄 На які основні категорії поділяються типи даних у Python?
Опрос
  •   Типи даних для чисел і рядків
  •   Основні та допоміжні
  •   Змінні та незмінні
  •   Числові та логічні типи
560 голосов


3 Найчастіші помилки Python розробників

🔮 1. Магічні числа

Магічні числа – це числа, що з’являються в коді без пояснення, що саме вони означають.


Наприклад дивлячись на дану змінну, зовсім не зрозуміло, за що вона відповідає.

a = 120

Але якщо додати пояснення, то робиться зразу зрозуміло, що йдеться про максимально дозволену швидкість!

max_speed_limit = 120

⚠️ 2. Неправильне розуміння is та ==

== перевіряє рівність значень, а is порівнює об'єкти за адресою в пам’яті. Наприклад, a == b перевірить значення, тоді як a is b перевірить, чи обидва об'єкти – один і той самий.

На дану тему вже був більш детальніший пост - тиць.

🤷‍♂️ 3. Ігнорування тернарного оператора

Іноді розробники пишуть на дуже багато рядків if-else там, де можна використати тернарний оператор. Він дозволяє записати if-else в один рядок, роблячи код компактнішим і більш читабельним.

# Замість цього:
LIMIT = 10
if x > LIMIT:
result = "More than 10"
else:
result = "10 or less"

# Використовуйте тернарний оператор:
result = "More than 10" if x > LIMIT else "10 or less"

🚀 Rumpy | 🖥 YouTube | 💬 Чат


Видео недоступно для предпросмотра
Смотреть в Telegram
🗂 Модуль os

Модуль os – це інструмент, який дає Python можливість працювати напряму з операційною системою. 🐧


🔑 Що можна робити за допомогою os:

1. Отримання інформації про поточну директорію:
current_dir = os.getcwd()

2. Зміна поточної директорії:
os.chdir('/path/to/new/directory')

3. Створення та видалення файлів/папок:
os.mkdir('new_folder')
os.rmdir('new_folder')

4. Перевірка наявності файлів:
if os.path.exists('file.txt'):
print('Файл існує')

5. Запуск команд операційної системи:
os.system('ls') # Для Linux/macOS
os.system('dir') # Для Windows

📄 Більше ж можна прочитати в доці.

🚀 Rumpy | 🖥 YouTube | 💬 Чат


👀 Чому глобальні змінні є прекрасним рішенням?
Опрос
  •   Тому що вони дозволяють легко змінювати стан програми з будь-якої частини коду.
  •   Тому що з ними можна писати код швидше та без потреби передавати змінні в функції.
  •   Глобальні змінні спрощують написання тестів
  •   Глобальні змінні не є прекрасним рішенням.
380 голосов


💻 QR-код на Python

1. 📥 Встановлення:
pip install qrcode[pil]

📝 2. Пояснення коду:

🧑‍💻 2.1 Створюємо об'єкт QR-коду:
version – визначає розмір QR-коду. Якщо посилання коротке, версії 1 буде достатньо. Для довших посилань або великих обсягів даних потрібні вже більші версії.


error_correction потрібний, оскільки QR-код може бути трохи пошкоджений чи забруднений, але все одно він повинен залишатися зчитуваним.


box_size=10 – це розмір QR-коду. Чим більше значення, тим більше буде зображення.


border=4 – це товщина білої рамки навколо QR-коду.


🔗 2.2 Додання даних в QR-код:
qr.add_data(data)
qr.make(fit=True)

Тут додаються дані, які треба зашифрувати (в даному випадку, це URL).

fit=True знадобиться, якщо раптом буде вказана замала версія. У такому випадку бібліотека сама підбере потрібне число.


🐈Більше ж можна подивитися на гітхабі.

🚀 Rumpy | 🖥 YouTube | 💬 Чат


🔄 Enumerate в Python

enumerate — це спосіб додати лічильник до ітерованого об’єкта.


⚙️ Параметри функції enumerate()

iterable — це послідовність, ітератор або будь-які об'єкти, які можна перебирати.

start (необов'язковий) — початкове значення для нумерації. За замовчуванням початок відліку — 0, якщо не вказано інше.


👩‍💻 Приклад:

fruits = ['Apple', 'Pear', 'Orange', 'Cherry']
print(list(enumerate(fruits)))
# [(0, 'Apple'), (1, 'Pear'), (2, 'Orange'), (3, 'Cherry')]

print(list(enumerate(fruits, start=1)))
# [(1, 'Apple'), (2, 'Pear'), (3, 'Orange'), (4, 'Cherry')]

🟢 Перебір списків з індексами:
У цьому прикладі використовується цикл for разом із enumerate() для перебору списку з індексами та виведення кожного елемента з його номером.


for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")

# 0: Apple
# 1: Pear
# 2: Orange
# 3: Cherry

🚀 Rumpy | 🖥 YouTube | 💬 Чат


📔 Атрибути класів і об'єктів

Для того щоб оголосити клас у Python, використовується ключове слово class.
class Car:

🏎 Атрибути класу

Атрибути — це змінні, що зберігають дані про клас.

class Car:
# Атрибут класу
color = black
wheels = 4

🚗 Атрибути об'єктів

Якщо потрібно створити машину з іншими характеристиками, можна змінювати атрибути для кожного об'єкта окремо:

first_car = Car()
second_car = Car()

first_car.color = "red"
second_car.color = "blue"

print(first_car.color) # Виведе: red
print(second_car.color) # Виведе: blue

🚀 Rumpy | 🖥 YouTube | 💬 Чат


👨‍💻 Введення в ООП

Об'єктно-орієнтоване програмування

🖥 Види програмування:

Процедурне програмування — це коли ти просто пишеш код послідовно, функція за функцією.


❤️ Скоріше за все, ти вже так робив більшу частину часу. Але коли програма розростається, стає складніше розібратися в коді і тут вже потрібний ООП.

ООП - це підхід, при якому програма будується з об'єктів. Уяви, що кожен об'єкт — це як реальна річ.


👮‍♂️ Наприклад, машина: у неї є властивості (марка, модель) і дії (вона може їхати).

😕 Що ж дає ООП?

1. Організованість: Код розбивається на об'єкти, кожен з яких виконує конкретну задачу. Це спрощує розуміння та управління програмою.
2. Легке розширення: Для змін або додавання нового функціоналу працюєш лише з відповідним об'єктом, а не всім кодом.
3. Повторне використання: Один шаблон (клас) дозволяє створювати багато об'єктів із різними характеристиками.

🚀 Rumpy | 🖥 YouTube | 💬 Чат


🌀 Range()

range() — дозволяє створювати послідовності чисел. Його часто використовують в циклах, коли треба повторювати дію певну кількість разів або пройтись по індексах елементів списку.

🤔 Як це працює?
range(start, stop, step)

start — початок послідовності (за замовчуванням 0)
stop — кінець послідовності (НЕ включається)
step — крок між числами (може бути негативним!)

⤵️ Приклади:

1. Простий цикл:

for i in range(5):
print(i)

Виведе числа від 0 до 4

2. Задаємо початок і крок:

for i in range(2, 10, 2):
print(i)

Виведе парні числа: 2, 4, 6, 8.

3. В зворотньому порядку:

for i in range(10, 0, -1):
print(i)

Виведе числа від 10 до 1.

Корисний момент:

🟠 range() не створює список, а лише генерує числа по мірі потреби, що економить пам'ять. Якщо треба перетворити в список, використовуйте:
list(range(5))

🚀 Rumpy | 🖥 YouTube | 💬 Чат


Видео недоступно для предпросмотра
Смотреть в Telegram
⚡️ Прогрес бар в Python ⚡️

tqdm — це бібліотека для швидкого додавання прогрес барів у Python.

📥 Встановлення:

pip install tqdm

😎 Приклад використання:

from tqdm import tqdm
import time

for i in tqdm(range(100)):
time.sleep(0.1)

🦎 Зміна вигляду прогрес бару

for i in tqdm(range(100), ascii="░▒▓"):
time.sleep(0.1)

🏎 Налаштування частоти оновлення

for i in tqdm(range(100), miniters=10): # Оновлення кожні 10 ітерацій
time.sleep(0.1)

🚀 Rumpy | 🖥 YouTube | 💬 Чат


📂 Як працювати з файлами в Python?

Python дозволяє легко читати та записувати файли. Ось кілька базових операцій з файлами:

📌 Читання з файлу:
with open('file.txt', 'r') as file:
data = file.read()
print(data)

📌 Запис у файл:
with open('file.txt', 'w') as file:
file.write('Hello, Python!')

📝 Порада: використовуйте with, щоб автоматично закрити файл після роботи з ним!

🚀 Rumpy | 🖥 YouTube | 💬 Чат


Анотації

Анотації в Python — це спосіб вказати типи змінних, параметрів функцій або їх результатів. Вони не змушують Python працювати з цими типами, але допомагають програмістам і IDE зрозуміти, з чим вони мають справу.

🔋 Як це виглядає?

1. Анотації для параметрів і результату функції

def add_numbers(a: int, b: int) -> int:
return a + b

У цьому прикладі параметри a і b повинні бути цілими числами, а функція повертає теж ціле число. Анотації — це підказка, але Python не перевіряє їх під час виконання.

2. Анотації для змінних

x: str = "Hello"
y: float = 3.14

3. List, Dict, Tuple

from typing import List, Dict, Tuple

def process_data(numbers: List[int], data: Dict[str, int], coordinates: Tuple[float, float]) -> None:
print(f"Список чисел: {numbers}")
print(f"Словник: {data}")
print(f"Координати: {coordinates}")

4. Optional
Optional означає, що змінна може мати тип або бути None.

from typing import Optional

def find_user(name: Optional[str] = None) -> str:
if name:
return f"Знайдено користувача: {name}"
return "Користувач не вказаний"

5. Union або |
Union використовується, коли параметр або результат може мати кілька різних типів.

from typing import Union

def get_value(value: Union[int, str]) -> str:
return f"Значення: {value}"

Або так, більш сучасно:

def get_value(value: int | str) -> str:
return f"Значення: {value}"

6. Any
Any — універсальний тип, який дозволяє передавати будь-які дані.

from typing import Any

def process_anything(data: Any) -> None:
print(f"Обробка: {data}")

Для чого це використовувати?

1. Підвищує читабельність: Інші розробники (або ви самі через певний час) легше зрозуміють, що відбувається в коді.
2. Допомагає уникнути помилок: IDE може попередити вас про можливу помилку, якщо ви передасте значення неправильного типу.
3. Додає підказки: При використанні IDE він може підказати їх параметри функції.

🚀 Rumpy | 🖥 YouTube | 💬 Чат


Плагін Black

Коли пишеш код на Python, важливо дотримуватись єдиного стилю коду. Це не тільки робить твій код більш читабельним, але й полегшує його розуміння для інших розробників.

🥂 Для полегшення життя розробникам створили Black — плагін, який всього за кілька кліків автоматично форматуватиме твій код за всіма стандартами. Він зробить його охайним і приємним для ока.

👀 Хочеш побачити, як це працює?

Найкращий спосіб зрозуміти це — спробувати самому! Як кажуть: "Краще один раз побачити, ніж сто разів почути".

🚀 Як встановити та почати користуватися Black:

1. Відкрий PyCharm, перейди до вкладки Plugins і знайди BlackConnect його потрібно завантажити.
2. У терміналі виконай команду pip install black[d].
3. Для запуску Black введи команду blackd.
4. Щоб відформатувати код, просто натисни Alt + Shift + B у файлі, де потрібне форматування.

👍 Особисто я постійно використовую цей плагін і він допомагає зробити мій код чистим і структурованим.

🔥 Спробуйте обов'язково використати цей плагін та насолодіться тим, як покращиться ваш код!

🚀 Rumpy | 🖥 YouTube | 💬 Чат

Показано 20 последних публикаций.