Python просто | з Коропом
222 subscribers
68 photos
43 links
Легко і доступно розказую про Пайтон

Ви завжди знайдете тут щось нове та корисне для себе 😊

Автор — @kor0p, практикуючий Пайтоніст з п'ятирічним досвідом 😎


Чат — @python_kor0p_chat
Download Telegram
Що таке взагалі мутабельність, і чому про це питають на співбесіді? 🤔

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

Числа у Пайтоні — іммутабельний об'єкт. Але якщо його запихнути у список — уже ні? (приклад 3)

Ні, число досі іммутабельне, а саме список — ні. У цьому прикладі ми не змінюємо число, а оновлюємо конкретну змінну (перший елемент списку)

Але чому ж у прикладі №2 виводиться неактуальне значення?

Через те саме
Числа — іммутабельні, і тому Пайтон передає НЕ референс, а реальне значення

Ці нюанси важливі для розуміння як працює Пайтон всередині, і саме тому їх так полюбляють запитувати на технічних співбесідах 🤓


Спробувати самостійно | Підписатись
4👍3❤1🔥1
Щоб додати числа — просто використай sum()

А чому тільки числа?)
sum() може додати що завгодно, тільки передайте параметр start, оскільки за замовчуванням там стоїть 0

Ставте 💅, якщо хочете побачити мою реалізацію
Ставте 😎, якщо самі знаєте як це зробити


Спробувати самостійно | Підписатись
💅17😎2211
Python просто | з Коропом
Щоб додати числа — просто використай sum() А чому тільки числа?) sum() може додати що завгодно, тільки передайте параметр start, оскільки за замовчуванням там стоїть 0 Ставте 💅, якщо хочете побачити мою реалізацію Ставте 😎, якщо самі знаєте як це зробити…
Просили? Ось вам!
Що, не просили? Ой не чує баба...

▫️Створюємо змінну для збереження результату, задавши start як початкове значення
▫️Ітеруємось по усіх елементах, і додаємо кожен до результату
▫️Повертаємо результат

Коротше, як бачите, реалізація проста як світ)

Тому досліджуйте і досліджуваними будете буде вам щастя 😊


Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤3😁1🌚11
Ви можете передавати генератор як аргумент
І навіть без додаткових дужок

Тааак, виглядає трохи дивно, але це працює 🤯

Точніше, працює лише доти, доки це єдиний аргумент 😅


Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤111
Останні два дні не було постів, бо в мене просто не було сил на це
🤒

Можете поки що в коментарях накидати теми, які вас цікавлять, або ж питання які давно вас турбують
Спробую на щось відповісти або навіть оформити у вигляді поста згодом


Також, я думав над таким цікавим форматом, як задачі з призом
Суть така:
- я виставляю задачу
- ви кидаєте відповіді у бота
- я обираю найкращий
- публікую його і свій варіант на наступний день

Яке вирішення буде вважатись найкращим?
Це може бути найшвидше, найменше коду чи найбільш просте — залежно від задачі (тобто для кожної по-різному)

Як часто будуть такі задачки?
Десь раз в тиждень

Яким буде приз?
Це ще вирішимо, бо у мене декілька варіантів:
- маленька грошова сума (≈100грн)
- менторство зі мною (на ≈2 години) або кол зі мною (на годину)
- система балів (де за результатами місяця більший приз, наприклад книга по Пайтону, курс по Пайтону чи підписка PyCharm Pro)

Отож, діліться думками про все це — у коментарях 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤2
Python просто | з Коропом
При написанні типових користувацьких програм варто додавати пояснення та контекст для деяких помилок Але при цьому не завжди треба ловити цю помилку. Для цього можна у блоці except дописати raise і помилка піде далі, аж поки не зупинить виконання програми…
Я уже розповідав про ре-рейз помилок, але й сам забув, що замість print'а краще використати метод add_note() 😅

Цей метод дозволяє додати нотатку для будь-якої помилки, щоб мати більше контексту

Усі ці нотатки зберігаються у атрибуті __notes__ (але якщо нотаток не було, то й атрибута не буде, це важливо)

Він доступний лише з версії 3.11, але уже встиг увійти у активний обіг (принаймні у мене 👀)

Документація

А за посиланням нижче є аж 4 додаткових приклади 😉

Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥11
Конструкція try/except має багато можливостей, хоч і не всі їх розуміють
Серед таких є і блок else, який виконається тільки у тому випадку, якщо у блоці try не було помилки

Якщо ви хочете бути впевненими, що змінна, створена у блоці try буде доступна, то замість того, щоб писати код після усієї конструкції, додайте цей код у блок else

По суті це вбудований if/else в залежності від того чи була помилка, але з усією красою та функціональністю try/except

Якщо хтось знайомий з Promise у JS, то блок else можна порівняти з колбеком .then


Спробувати самостійно
| Підписатись
❤8👍11
finally — ще один блок конструкції try/except

Використовуйте finally, коли треба щось виконати, незалежно від результату інших блоків
Наприклад: закрити файл, закрити конекшин/транзакцію у БД тощо

Побічний ефект: цей блок виконається перед return, тому можна уникнути створення зайвої змінної для повернення результату з функції
Теж саме стосується і break, і continue, якщо try/except знаходиться в циклі

Документація

Спробувати самостійно | Підписатись
❤5👍2🔥11
else
Так знову 👀, але тепер у for 😅

Якщо у циклі не буде виклику break, виконається код у блоці else
Якщо не буде жодного елемента, також виконається (всьо логічно ж 🤷‍♂️)

Цю можливість можна використати для вкладених циклів, або для повернення дефолтного значення у блоці else

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

Тобто, це крутий інструмент, але доволі складний для розуміння, тому майте це на увазі у ваших проєктах)


Спробувати самостійно | Підписатись
👍4❤3😁1111
Яким буде результат у останньому рядку?

#вікторини
🤯221
Яким буде результат у останньому рядку?
Anonymous Quiz
25%
Помилка у циклі ❌
55%
[1, 6, 4]
15%
[1, 40, 6, 4]
2%
[1, 25, 6, 4]
3%
Не знаю 🤷‍♂️
🤯1
Відповідь: [1, 40, 6, 4]

Пояснення:

При ітерації, не варто видаляти елементи з масиву — Пайтон губиться і може пропустити елемент 😢

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

Тому, якщо вам таки треба видалити об'єкт з масиву, по якому ви ітеруєтесь, скопіюйте масив через .copy() чи [:]

Все те саме стосується і будь-яких інших змін у масиві — треба бути дуже обережним)



Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤71
А що це тут таке складне? 🫠
А це — дескриптори

Нумо читати статтю на Друкарні 😉

Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3❤1👌11
Погані звички, які прийшли від купи старих гайдів 🫠
Одна з причин, чому я завів цей канал, це боротьба з ними 😅

Так от, with open це прекрасно, але навіщо вам трактор, якщо вам треба лопата?)
Лопатою я тут назвав Path — дуже простий спосіб копати ями працювати з файлами
Якщо треба зробити це швидко і небагато — ви візьмете лопату 😉

Записати текст у файл? file.write_text
Зчитати текст з файлу? Тю, file.read_text

Ви колись бачили щось простіше?)

Звісно, ніхто не каже викидати open, просто це більш гнучкий інструмент, який буде корисним у складніших операціях, але з яким треба вміти поводитись (трактором от можна й танк тягнути 😉)


Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍3🔥1