Стислі відповіді на популярні запитання про Python


Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.

Python – відмінна мова для виконання великої кількості різних задач: від веба до наукових розрахунків. Крім того, вона доволі проста. Настільки, що почати писати на ній можна за день-два. Проте ніхто не сперечатиметься з приводу того, що Python істотно відрізняється від більшості популярних мов, таких як C, C++, C# або Java. У цій статті ми зібрали відповіді на поширені запитання і дали пояснення деяких “дивних” властивостей Python, над якими часто розмірковують як новачки, так і досвідчені фахівці.

(Заголовки кликабельны.)


Чому для деяких речей використовуються методи (list.index ()), а для деяких – оператори (len (list))?

Це було зроблено передусім для поліпшення читаності. Друга, важлива причина – можливість реалізувати ці методи на C.


Чому [] працює швидше, ніж list ()?

[] і {} – це частина синтаксису. Списки і словники, створені цим методом, ініціалізувалися в байт-коді відразу, тоді як методи list () і dict () вимагають пошуку в таблиці методів.


Чому в Python немає switch/case?

Ці оператори легко замінюються if ... elif ... else чи словником з колбеками.


Чому ітерируватися за списком можна швидше, ніж за рядком?

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


Чому в Python використовується GIL (Global Interpreter Lock)?

Основні переваги GIL – краща продуктивність в однопотокових програмах і легша інтеграція з потоконебезпечними C-бібліотеками.


Навіщо в назві деяких методів вжито знаки підкреслення на початку?

Згідно з PEP8, одне нижнє підкреслення на початку назви методу використовується для приховання методу зі списку імпортованих (подібно до protected у Java), два підкреслення – для підстановки імені класу. Методи з двома знаками підкреслення на початку і двома наприкінці (наприклад, __init__()) – т. зв. “магічні”. Їх назва і призначення визначені стандартом мови.


Як 1000000000000000 in range (1000000000000001) працює так швидко в Python 3?

range () – це “ледача колекція” в Python 3. Крім того, метод __contains__() у ній реалізований так, що обчислює, чи потрапляє задане число в діапазон за 0(1).


Чому необхідно писати self у кожному методі?

Ця ідея була запозичена з Modula-3. У такого оголошення і виклику методів є багато переваг. У тому числі: Ви можете викликати будь-який метод класу на будь-якому об’єкті, немає необхідності в модифікаторах або ключових словах типу static, більше читаний і зрозумілий код.

Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *