Що таке взагалі мутабельність, і чому про це питають на співбесіді? 🤔
Сет — мутабельний, тому коли ми передаємо його як аргумент, Пайтон передає його референс, відповідно навіть при відкладеному виконанні ми побачимо актуальне значення
Числа у Пайтоні — іммутабельний об'єкт. Але якщо його запихнути у список — уже ні? (приклад 3)
Ні, число досі іммутабельне, а саме список — ні. У цьому прикладі ми не змінюємо число, а оновлюємо конкретну змінну (перший елемент списку)
Але чому ж у прикладі №2 виводиться неактуальне значення?
Через те саме
Числа — іммутабельні, і тому Пайтон передає НЕ референс, а реальне значення
Ці нюанси важливі для розуміння як працює Пайтон всередині, і саме тому їх так полюбляють запитувати на технічних співбесідах 🤓
Спробувати самостійно | Підписатись
Сет — мутабельний, тому коли ми передаємо його як аргумент, Пайтон передає його референс, відповідно навіть при відкладеному виконанні ми побачимо актуальне значення
Числа у Пайтоні — іммутабельний об'єкт. Але якщо його запихнути у список — уже ні? (приклад 3)
Ні, число досі іммутабельне, а саме список — ні. У цьому прикладі ми не змінюємо число, а оновлюємо конкретну змінну (перший елемент списку)
Але чому ж у прикладі №2 виводиться неактуальне значення?
Через те саме
Числа — іммутабельні, і тому Пайтон передає НЕ референс, а реальне значення
Ці нюанси важливі для розуміння як працює Пайтон всередині, і саме тому їх так полюбляють запитувати на технічних співбесідах 🤓
Спробувати самостійно | Підписатись
Щоб додати числа — просто використай
А чому тільки числа?)
Ставте 💅, якщо хочете побачити мою реалізацію
Ставте 😎, якщо самі знаєте як це зробити
Спробувати самостійно | Підписатись
sum()А чому тільки числа?)
sum() може додати що завгодно, тільки передайте параметр start, оскільки за замовчуванням там стоїть 0Ставте 💅, якщо хочете побачити мою реалізацію
Ставте 😎, якщо самі знаєте як це зробити
Спробувати самостійно | Підписатись
💅17😎2 2 1 1
Python просто | з Коропом
Щоб додати числа — просто використай sum() А чому тільки числа?) sum() може додати що завгодно, тільки передайте параметр start, оскільки за замовчуванням там стоїть 0 Ставте 💅, якщо хочете побачити мою реалізацію Ставте 😎, якщо самі знаєте як це зробити…
Просили? Ось вам!
Що, не просили? Ой не чує баба...
▫️ Створюємо змінну для збереження результату, задавши
▫️ Ітеруємось по усіх елементах, і додаємо кожен до результату
▫️ Повертаємо результат
Коротше, як бачите, реалізація проста як світ)
Тому досліджуйте ідосліджуваними будете буде вам щастя 😊
Спробувати самостійно | Підписатись
Що, не просили? Ой не чує баба...
start як початкове значенняКоротше, як бачите, реалізація проста як світ)
Тому досліджуйте і
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Ви можете передавати генератор як аргумент
І навіть без додаткових дужок
Тааак, виглядає трохи дивно, але це працює 🤯
Точніше, працює лише доти, доки це єдиний аргумент😅
Спробувати самостійно | Підписатись
І навіть без додаткових дужок
Тааак, виглядає трохи дивно, але це працює 🤯
Точніше, працює лише доти, доки це єдиний аргумент
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1 1 1
Останні два дні не було постів, бо в мене просто не було сил на це
🤒
Можете поки що в коментарях накидати теми, які вас цікавлять, або ж питання які давно вас турбують
Спробую на щось відповісти або навіть оформити у вигляді поста згодом
Також, я думав над таким цікавим форматом, як задачі з призом
Суть така:
- я виставляю задачу
- ви кидаєте відповіді у бота
- я обираю найкращий
- публікую його і свій варіант на наступний день
Яке вирішення буде вважатись найкращим?
Це може бути найшвидше, найменше коду чи найбільш просте — залежно від задачі (тобто для кожної по-різному)
Як часто будуть такі задачки?
Десь раз в тиждень
Яким буде приз?
Це ще вирішимо, бо у мене декілька варіантів:
- маленька грошова сума (≈100грн)
- менторство зі мною (на ≈2 години) або кол зі мною (на годину)
- система балів (де за результатами місяця більший приз, наприклад книга по Пайтону, курс по Пайтону чи підписка PyCharm Pro)
Отож, діліться думками про все це — у коментарях 😊
Можете поки що в коментарях накидати теми, які вас цікавлять, або ж питання які давно вас турбують
Спробую на щось відповісти або навіть оформити у вигляді поста згодом
Також, я думав над таким цікавим форматом, як задачі з призом
Суть така:
- я виставляю задачу
- ви кидаєте відповіді у бота
- я обираю найкращий
- публікую його і свій варіант на наступний день
Яке вирішення буде вважатись найкращим?
Це може бути найшвидше, найменше коду чи найбільш просте — залежно від задачі (тобто для кожної по-різному)
Як часто будуть такі задачки?
Десь раз в тиждень
Яким буде приз?
Це ще вирішимо, бо у мене декілька варіантів:
- маленька грошова сума (≈100грн)
- менторство зі мною (на ≈2 години) або кол зі мною (на годину)
- система балів (де за результатами місяця більший приз, наприклад книга по Пайтону, курс по Пайтону чи підписка PyCharm Pro)
Отож, діліться думками про все це — у коментарях 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤2
Python просто | з Коропом
При написанні типових користувацьких програм варто додавати пояснення та контекст для деяких помилок Але при цьому не завжди треба ловити цю помилку. Для цього можна у блоці except дописати raise і помилка піде далі, аж поки не зупинить виконання програми…
Я уже розповідав про ре-рейз помилок, але й сам забув, що замість
Цей метод дозволяє додати нотатку для будь-якої помилки, щоб мати більше контексту
Усі ці нотатки зберігаються у атрибуті
Він доступний лише з версії 3.11, але уже встиг увійти у активний обіг (принаймні у мене 👀)
Документація
А за посиланням нижче є аж 4 додаткових приклади😉
Спробувати самостійно | Підписатись
print'а краще використати метод add_note() 😅Цей метод дозволяє додати нотатку для будь-якої помилки, щоб мати більше контексту
Усі ці нотатки зберігаються у атрибуті
__notes__ (але якщо нотаток не було, то й атрибута не буде, це важливо)Він доступний лише з версії 3.11, але уже встиг увійти у активний обіг (принаймні у мене 👀)
Документація
А за посиланням нижче є аж 4 додаткових приклади
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥1 1
Конструкція
Серед таких є і блок
Якщо ви хочете бути впевненими, що змінна, створена у блоці
По суті це вбудований
Якщо хтось знайомий з Promise у JS, то блок
Спробувати самостійно | Підписатись
try/except має багато можливостей, хоч і не всі їх розуміютьСеред таких є і блок
else, який виконається тільки у тому випадку, якщо у блоці try не було помилкиЯкщо ви хочете бути впевненими, що змінна, створена у блоці
try буде доступна, то замість того, щоб писати код після усієї конструкції, додайте цей код у блок elseПо суті це вбудований
if/else в залежності від того чи була помилка, але з усією красою та функціональністю try/exceptЯкщо хтось знайомий з Promise у JS, то блок
else можна порівняти з колбеком .thenСпробувати самостійно | Підписатись
❤8👍1 1
finally — ще один блок конструкції try/exceptВикористовуйте
finally, коли треба щось виконати, незалежно від результату інших блоківНаприклад: закрити файл, закрити конекшин/транзакцію у БД тощо
Побічний ефект: цей блок виконається перед
return, тому можна уникнути створення зайвої змінної для повернення результату з функціїТеж саме стосується і
break, і continue, якщо try/except знаходиться в цикліДокументація
Спробувати самостійно | Підписатись
❤5👍2🔥1 1
elseТак знову 👀, але тепер у
for 😅Якщо у циклі не буде виклику
break, виконається код у блоці elseЯкщо не буде жодного елемента, також виконається (всьо логічно ж 🤷♂️)
Цю можливість можна використати для вкладених циклів, або для повернення дефолтного значення у блоці
elseЯ сам інколи юзаю цю штуку, але завжди дописую коментерам умови, за яких виконається ця частина коду, і для чого саме так побудовано
Тобто, це крутий інструмент, але доволі складний для розуміння, тому майте це на увазі у ваших проєктах)
Спробувати самостійно | Підписатись
👍4❤3😁1 1 1 1
Яким буде результат у останньому рядку?
Anonymous Quiz
25%
Помилка у циклі ❌
55%
[1, 6, 4]
15%
[1, 40, 6, 4]
2%
[1, 25, 6, 4]
3%
Не знаю 🤷♂️
🤯1
Відповідь: [1, 40, 6, 4]
Пояснення:
При ітерації, не варто видаляти елементи з масиву — Пайтон губиться і може пропустити елемент 😢
Так відбувається через те, що для ітерації по масиву, Пайтон зберігає індекс, а видалення одного елемента зміщує індекс для інших
Тому, якщо вам таки треба видалити об'єкт з масиву, по якому ви ітеруєтесь, скопіюйте масив через .copy() чи [:]
Все те саме стосується і будь-яких інших змін у масиві — треба бути дуже обережним)
Спробувати самостійно | Підписатись
Пояснення:
Так відбувається через те, що для ітерації по масиву, Пайтон зберігає індекс, а видалення одного елемента зміщує індекс для інших
Тому, якщо вам таки треба видалити об'єкт з масиву, по якому ви ітеруєтесь, скопіюйте масив через .copy() чи [:]
Все те саме стосується і будь-яких інших змін у масиві — треба бути дуже обережним)
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤7 1