Яким буде результат у останньому рядку?
Anonymous Quiz
45%
[3]
27%
[1, 3]
11%
Помилка
15%
[2, 3]
2%
[]
Правильна відповідь: [1, 3]
Пояснення:
Пайтон зберігає аргументи функції під час її створення, в тому числі й їхні значенні за замовчуванням
Тому, якщо не передавати другий аргумент явно, Пайтон гляне на опис функції, знайде там масив, і просто передасть його натомість
Для того, щоб при кожному виклику створювався новий пустий список, вам необхідно винести його створення у тіло функції
Такі аргументи як data — називають мутабельними, і їх треба уникати. Тому чекери синтаксису маркують такий код як поганий)
Спробувати самостійно | Підписатись
Пояснення:
Тому, якщо не передавати другий аргумент явно, Пайтон гляне на опис функції, знайде там масив, і просто передасть його натомість
Для того, щоб при кожному виклику створювався новий пустий список, вам необхідно винести його створення у тіло функції
Такі аргументи як data — називають мутабельними, і їх треба уникати. Тому чекери синтаксису маркують такий код як поганий)
Спробувати самостійно | Підписатись
🔥8 3👍1
Якщо ви працюєте з даними в Пайтоні, вам точно треба знати про такі дві функції:▫️
▫️
Як зрозуміти, що значення — істинне?
Якщо для
Для структур даних, можна також сказати, що вони мають бути "не пустими"
Спробувати самостійно | Підписатись
any — Перевіряє чи є хоча б одне істинне значенняall — Перевіряє чи усі значення є істиннимиЯк зрозуміти, що значення — істинне?
Якщо для
if це значення виконає умову, воно — істиннеДля структур даних, можна також сказати, що вони мають бути "не пустими"
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Насправді, таку ж функцію можна реалізувати самостійно 😎
Ітеруємось по значеннях, і якщо зустріли істинне — виходимо з функції з позитивним результатом. Якщо ж, жодного не знайшли — виходимо з негативним
З цього, зокрема, стає зрозуміло, чому
Спробувати самостійно | Підписатись
Ітеруємось по значеннях, і якщо зустріли істинне — виходимо з функції з позитивним результатом. Якщо ж, жодного не знайшли — виходимо з негативним
З цього, зокрема, стає зрозуміло, чому
any([]) дає False. Якщо не відбулось жодної ітерації — буде FalseСпробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓6😁1
Теж саме стосується і
Ітеруємось по значеннях, і якщо зустріли не істинне — виходимо з функції з негативним результатом. Якщо ж усі значення істинні, то виходимо з позитивним
Відповідно, для
Спробувати самостійно | Підписатись
all() — тут навіть реалізації схожі 😅Ітеруємось по значеннях, і якщо зустріли не істинне — виходимо з функції з негативним результатом. Якщо ж усі значення істинні, то виходимо з позитивним
Відповідно, для
all([]) результат буде True — оскільки жодної ітерації не відбулосьСпробувати самостійно | Підписатись
👨💻1 1
Якщо, коли вам треба прибрати частинку з початку тексту, або з кінця, ви використовуєте
Метод
*
Якщо ж треба просто видалити підстрічку з іншої стрічки з початку чи з кінця, то🔥
Спробувати самостійно | Підписатись
.strip(), то ви робите це неправильно 🌚Метод
.strip() видалить будь-який з перелічених символів з початку та кінця стрічки. Ці символи можуть бути у будь-якому порядку та у будь-якій кількості. Цей метод видалятиме символи з обох боків, поки перший та останній символ не будуть серед вказаних у аргументі*
rstrip() зробить це лише з кінця, а lstrip() — лише з початкуЯкщо ж треба просто видалити підстрічку з іншої стрічки з початку чи з кінця, то
.removeprefix() чи .removesuffix() — саме те, що вам треба Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👏2✍1 1
При написанні типових користувацьких програм варто додавати пояснення та контекст для деяких помилок
Але при цьому не завжди треба ловити цю помилку. Для цього можна у блоці
Спробувати самостійно | Підписатись
Але при цьому не завжди треба ловити цю помилку. Для цього можна у блоці
except дописати raise і помилка піде далі, аж поки не зупинить виконання програмиСпробувати самостійно | Підписатись
Python просто | з Коропом
При написанні типових користувацьких програм варто додавати пояснення та контекст для деяких помилок Але при цьому не завжди треба ловити цю помилку. Для цього можна у блоці except дописати raise і помилка піде далі, аж поки не зупинить виконання програми…
Більше прикладів я розбираю у JupyterLite Notebook
Це середовище, де ви можете запустити мої приклади з можливістю редагувати їх або ж запускати що вам завгодно)
До речі, у кожному пості є таке посилання, а недавно я зробив українську — мовою за замовчуванням
😊
Це середовище, де ви можете запустити мої приклади з можливістю редагувати їх або ж запускати що вам завгодно)
До речі, у кожному пості є таке посилання, а недавно я зробив українську — мовою за замовчуванням
😊
kor0p.github.io
Jupyter Notebook - Notebooks
WASM powered Jupyter running in the browser.
Сьогодні не буде поради 🥺
Натомість, хочу вам розказати про Друкарню
Це українська платформа для довгочитів 😮
Рік тому я там випустив декілька коротких публікацій на тему Пайтону, наприклад Генератори — як і навіщо?
Думаю, що саме там я і буду розказувати про складні теми, а в цьому каналі публікуватиму посилання
Як вам ідея? 😊
Натомість, хочу вам розказати про Друкарню
Це українська платформа для довгочитів 😮
Рік тому я там випустив декілька коротких публікацій на тему Пайтону, наприклад Генератори — як і навіщо?
Думаю, що саме там я і буду розказувати про складні теми, а в цьому каналі публікуватиму посилання
Як вам ідея? 😊
Друкарня
Пайтон: генератори — як і навіщо?
Генератор — це функція з yield або вираз (comprehension), що вертає ітератор (те, по чому можна пройтись циклом)
👌2
Яким буде результат у останньому рядку?
Anonymous Quiz
33%
['Viktor']
2%
['Hi']
60%
['Hi', 'Viktor']
5%
Не знаю 🤷♂️
🤔3
Відповідь: ['Hi', 'Viktor']
Пояснення:
Класи у Пайтоні можуть мати статичні атрибути, які задаються на етапі створення класу
Такі атрибути можуть бути використані й у об'єктах цього класу, але для них всіх (і класу і його об'єктів) такі атрибути будуть спільними — тобто вказуватимуть на один і той же об'єкт. Відповідно зміна у одному об'єкті змінить цей атрибут й у інших
Щоб задати початкове значення для атрибуту, використовуйте __init__
Якщо ж ви свідомо робите статичний атрибут, вказуйте тип ClassVar[list], щоб інші розробники знали про це
Спробувати самостійно | Підписатись
Пояснення:
Такі атрибути можуть бути використані й у об'єктах цього класу, але для них всіх (і класу і його об'єктів) такі атрибути будуть спільними — тобто вказуватимуть на один і той же об'єкт. Відповідно зміна у одному об'єкті змінить цей атрибут й у інших
Щоб задати початкове значення для атрибуту, використовуйте __init__
Якщо ж ви свідомо робите статичний атрибут, вказуйте тип ClassVar[list], щоб інші розробники знали про це
Спробувати самостійно | Підписатись
❌ Міф:
✅ Правда:
1.
Ключовими словами є
2. Замість
Але за правилами PEP8, треба використовувати саме це ім'я для звичайних методів, а
3.
Ви ж можете (але не варто) передати будь-яку іншу змінну, наприклад:
Оскільки
Не читайте іншихгазет каналів, читайте тільки наш ❤️
self — це ключове слово у Пайтоні, яке використовується для звернення до поточного об'єкта класу✅ Правда:
1.
self це не ключове словоКлючовими словами є
return, def та інші. Такі слова не можуть бути назвою змінної, оскільки це буде синтаксичною помилкою 🌚2. Замість
self можна підставити будь-щоАле за правилами PEP8, треба використовувати саме це ім'я для звичайних методів, а
cls — для методів класу (@classmethod) 😅3.
self це не звернення до поточного об'єкта класуself це змінна, яку Пайтон передає автоматично у методВи ж можете (але не варто) передати будь-яку іншу змінну, наприклад:
dict.__dir__(0) 🤯Оскільки
__dir__ це просто функція (якщо ми її викликаємо напряму з класу, і вона не позначена як @classmethod чи @staticmethod), то замість self ми можемо передати будь-що 👀Не читайте інших
👍4❤2🔥1
range(len(...)) — це буквально минуле століття, адже функція enumerate доступна ще з Python 2.3, і я бігме не розумію чому досі існує код як у прикладі зліва)Спробувати самостійно | Підписатись
У випадку необхідності об'єднати два словники — використовуйте
Ця операція доступна починаючи з Python3.9
Спробувати самостійно | Підписатись
| (бінарне або)Ця операція доступна починаючи з Python3.9
Спробувати самостійно | Підписатись
❤6🤯1🆒1 1