Хоча з моменту першого випуску Python минуло вже понад три десятиліття, він залишається надзвичайно популярною мовою програмування, улюбленою як серед досвідчених розробників, так і серед тих, хто тільки починає свій шлях у кодуванні.
Рейтинги PYPL і TIOBE на жовтень 2023 року вказують на Python як на найбільш використовувану мову програмування у світі.
Опитування розробників Stack Overflow за 2022 рік також засвідчує, що Python зайняв друге місце серед найпопулярніших мов програмування. Тому, будь-який програміст, який обере Python для навчання та роботи, отримає значні переваги з точки зору працевлаштування та можливостей професійного розвитку.
Однак, після вибору Python як основної мови, виникає наступне важливе питання: яку версію використовувати – Python 2 чи Python 3? Це питання часто турбувало і мене, як розробника Python. Якщо ви також вагаєтеся, яку версію обрати, ця стаття допоможе вам зробити правильний вибір.
Що таке Python 2?
Python 2 та Python 3 – це дві основні гілки розвитку мови програмування Python. Версія Python 2.0 була представлена у 2000 році і містила нові можливості та покращення, що мали на меті спростити процес вивчення та використання Python для розробки програмного забезпечення.
Python 2 також був представлений разом із документом пропозицій щодо вдосконалення Python (PEP), який є технічною специфікацією, що надає інформацію про нові можливості Python та служить основним механізмом для пропозицій нових функцій мови.
Python 2 був дуже популярний і широко застосовувався як розробниками, так і компаніями. Проте 1 січня 2020 року Python 2 офіційно завершив свій життєвий цикл, і його підтримку було припинено. Після цієї дати Python 2 більше не отримував жодних оновлень. Останньою версією Python 2 була Python 2.7, випущена у 2010 році.
Оскільки підтримка Python 2 припинилася, увага розробників перемістилася на наступний великий реліз мови Python.
Що таке Python 3?
Python 3, вперше представлений 3 грудня 2008 року, був розроблений для усунення недоліків у дизайні та проблем безпеки, які були присутні в Python 2. Python 3 вніс кардинальні зміни та нові можливості до мови, щоб зменшити надмірність коду та зробити його більш читабельним.
Надмірність у коді означає наявність повторюваного або дублюючого коду. Python 3 вніс значні зміни в синтаксис мови Python, серед іншого. Зміни, внесені в Python 3, були настільки значними, що код Python 3 виявився несумісним із Python 2.
Можна було б припустити, що наразі всі компанії та розробники використовують Python 3, але це не так. Опитування розробників Python, проведене JetBrains у 2022 році, показало, що станом на цей рік 7% розробників Python все ще використовують Python 2. Опитування показало, що Python 2 здебільшого використовується для аналізу даних, комп’ютерної графіки та DevOps.
Оскільки розробники постійно працюють з кодом, давайте розглянемо кілька прикладів, що демонструють відмінності в синтаксисі між Python 2 і Python 3, перш ніж заглибитися в основні відмінності між цими двома версіями.
Синтаксичні відмінності між Python 2 і Python 3
Одна з відмінностей між Python 2 і Python 3 полягає у способі виведення даних на екран. У Python 2 print є оператором, тоді як у Python 3 print – це функція. Наведені нижче приклади показують різницю у виведенні на стандартний вихід за допомогою Python 2 і Python 3.
Python 2
print "Hello, World!"
Вивід:
Python 3
print("Hello, World!")
Вивід
Інша відмінність між Python 2 і Python 3 в синтаксисі коду полягає у використанні анотацій типів. Анотації типів дозволяють нам вказати тип змінної, параметра або навіть тип повернення. Це допомагає мінімізувати помилки в коді, а також чітко вказувати очікувані типи даних.
Анотації типів підтримуються в Python 3, але відсутні в Python 2. Нижче наведено приклад коду, який показує використання анотацій типів у Python 3 та аналогічний код без анотацій типів у Python 2.
Python 3
У наведеному нижче прикладі коду анотація `int` використовується для позначення того, що змінна `age` має бути цілим числом. `str` використовується для анотації аргументу функції `greet`, а також її типу, що повертається.
# Анотація типу - int вказує, що age є цілим числом age: int = 30 # Анотація типу - str вказує тип аргументу # і тип значення, що повертає функція greet() def greet(name: str) -> str: return "Hello, " + name result = greet("Alice") print(result) print("Your age is " + str(age))
Вивід:
Hello, Alice Your age is 30
Python 2
Зверніть увагу, що цей код не містить анотацій типів. Також зверніть увагу на спосіб виведення даних:
age = 30; def greet(name): return "Hello, " + name result = greet("Alice") print result print "Your age is " + str(age)
Вивід:
Hello, Alice Your age is 30
Ще одна відмінність, яку ви помітите при написанні коду на Python 2 та Python 3 – це результат цілочисельного ділення. Щоб побачити це на прикладі, виконаємо цілочисельне ділення у Python 2 та Python 3:
З наведеного коду видно, що при виконанні цілочисельного ділення в Python 2, ми отримуємо ціле число, а десяткова частина відкидається. Однак, у Python 3 результатом цілочисельного ділення є число з плаваючою комою, яке містить десяткову частину результату.
З огляду на наведені синтаксичні відмінності, яку версію – Python 2 чи Python 3 – ви б обрали? Чи вважаєте ви Python 3 вдосконаленням Python 2? Якщо ви ще не впевнені, давайте розглянемо більше відмінностей між Python 2 і Python 3, щоб допомогти вам визначитися.
Відмінності між Python 2 і Python 3
Нижче наведено порівняльну таблицю відмінностей між Python 2 і Python 3:
Функція/Аспект | Python 2 | Python 3 |
Дата випуску | 16 жовтня 2000 р. | 3 грудня 2008 р. |
Офіційна підтримка | Офіційна підтримка закінчилась 1 січня 2020 р. | Наразі є офіційно підтримуваною версією Python |
Продуктивність | `print` є оператором. Наприклад, `print “Hello, world!”` | Має кращу продуктивність і працює швидше, ніж Python 2, майже у всіх порівняльних тестах |
Синтаксис | Синтаксис простий, але з надмірністю | Простий синтаксис, який легко читати та розуміти, майже не надлишковим |
Зберігання рядків | За замовчуванням рядки зберігаються як ASCII. | За замовчуванням рядки зберігаються як UNICODE. |
Цілочисельне ділення | Ділення двох цілих чисел дає ціле число після відкидання десяткової частини. Наприклад, `5/2 == 2` | Ділення двох цілих чисел дає значення з плаваючою комою. Наприклад, `5/2 == 2.5` |
Ключове слово `print` | `print` є оператором. Наприклад, `print “Hello, world!”` | `print` є функцією. Наприклад, `print(“Hello, world!”)` |
Анотації типів | Не має вбудованої підтримки анотацій типів | Має вбудовану підтримку анотацій типів, що дозволяє вказувати тип змінних, значення, що повертаються та параметри функцій. |
Ітерація | Ітерація виконується за допомогою `xrange` | Функціональна ітерація () виконується за допомогою функції `range()`, яка є ефективнішою, ніж `xrange()`. |
Бібліотеки | Має вбудовану підтримку анотацій типів, що дозволяє вказувати тип змінних, значення, що повертаються та параметри функцій. | Більшість бібліотек Python 3 призначені для роботи тільки з Python 3 без зворотної сумісності з Python 2. Пропонує кращі стандартні бібліотеки. |
Використання | Більше не використовується широко, оскільки не підтримується. | Широко використовується розробниками та компаніями. Зараз це найпопулярніша версія Python. |
Як перейти з Python 2 на Python 3
Оскільки Python 3 має кращий рівень безпеки та продуктивності, зрозуміліший та читабельний синтаксис із меншою надмірністю, а також є офіційно підтримуваною версією Python, має сенс перейти з Python 2 на Python 3.
Проте це легше сказати, ніж зробити. Python 3 не сумісний з Python 2. Перенесення проекту з Python 2 на Python 3 може бути дуже складним і потребуватиме значного часу та зусиль, залежно від розміру проекту.
Наприклад, компанії Dropbox, де працював Гвідо ван Россум, творець мови Python, знадобилося близько трьох років, щоб успішно перейти з Python 2 на Python 3.
Щоб перейти з Python 2 на Python 3, спочатку переконайтеся, що ви чітко розумієте відмінності між двома версіями та оцініть вартість міграції та потенційні переваги для вашої програми. Після цього переконайтеся, що у вас є система контролю версій, щоб ви могли відкотити вашу програму до попередньої робочої версії у разі виникнення помилок.
Перевірте залежності, які використовує ваша програма, і з’ясуйте, чи сумісні вони з Python 3, оскільки багато бібліотек уже перейшли на Python 3. Виберіть залежності, сумісні з Python 3.
Наступним кроком має бути робота над вашою кодовою базою для зміни коду з Python 2 на Python 3. Це найскладніша частина. Однак, хоча ви можете зробити це вручну, Python надає інструмент під назвою 2to3, який читає код Python 2 і перетворює його на Python 3. Використовуйте цей інструмент, щоб прискорити міграцію.
Під час міграції важливо тестувати та виправляти всі помилки, які можуть виникнути у коді. На основі звітів, створених 2to3, оцініть усі проблеми у вашій програмі та виправте їх. Під час цього процесу використання інструментів автоматизованого тестування корисне для прискорення процесу тестування та досягнення високого рівня охоплення тестами.
Протягом усього процесу міграції обов’язково документуйте процес. Крім того, використовуйте ітеративний підхід до міграції. Якщо у вас велика кодова база, замість того, щоб працювати над перенесенням всієї кодової бази на Python 3, зробіть процес поступовим, переносячи різні модулі програми в різних ітераціях.
Фактори, які слід враховувати під час вибору між Python 2 і Python 3 для вашого проекту
Працюючи з Python, важливо врахувати кілька факторів, коли ви вирішуєте, чи використовувати Python 2, чи Python 3.
Деякі з цих міркувань включають:
- Рівень досвіду: якщо ви розробник, який навчається програмувати на Python, використовуйте Python 3, оскільки це те, з чим ви, швидше за все, будете працювати. Ви також матимете доступ до більшої кількості навчальних ресурсів. Якщо ви досвідчений розробник Python, який розуміє відмінності між версіями та очікувані результати проекту, ви можете використовувати Python 2 або Python 3. Виберіть версію, яка найкраще підходить для вашого проекту і зрозуміла більшості членів вашої команди.
- Застарілий код: як розробник, ви можете працювати з великими кодовими базами, значна частина яких була написана на Python 2. У деяких випадках вартість міграції кодової бази на Python 3 може перевищити переваги. Як наслідок, може бути доцільно працювати з Python 2.
- Сумісність бібліотек: деякі старі бібліотеки Python 2 ще не повністю оновлено для роботи з Python 3. Якщо ви працюєте над проектами, які сильно залежать від таких бібліотек, можливо, вам краще використовувати Python 2.
- Продуктивність: якщо ви створюєте програму, яка потребує дуже високої продуктивності, вам слід використовувати Python 3. Python 3 є більш продуктивним, ніж Python 2, а також пропонує функції, що дозволяють створювати більш продуктивні програми. Тому, якщо у вашій програмі потрібна висока продуктивність, використовуйте Python 3, як це роблять Instagram та Dropbox.
- Довгострокова життєздатність: у 2020 році термін дії Python 2 закінчився, і офіційна підтримка більше не надається. Тому, якщо ви починаєте новий проект або підтримуєте існуючий, доцільніше використовувати Python 3 як безпечнішу та перспективну версію. Це тому, що він продовжуватиме отримувати оновлення та виправлення безпеки.
В ідеалі, у всіх своїх проектах ви маєте використовувати Python 3, оскільки це офіційно підтримувана версія. Крім того, вона пропонує багато функцій для покращення розробки та продуктивності програм.
Використовуйте Python 2 лише в окремих випадках, наприклад, коли проект, над яким ви працюєте, є застарілим проектом зі значним кодом Python 2 або проектами, що мають особливі вимоги, які роблять Python 2 ідеальним варіантом.
Висновок
Як розробник Python, майже всі мої проекти були створені за допомогою Python 3. Покращений дизайн, краща продуктивність, вищий рівень безпеки та чистіший синтаксис з меншою надмірністю роблять Python 3 беззаперечним лідером серед цих двох версій.
Зважаючи на те, що Python 3 є офіційно підтримуваною версією та майбутнім мови Python, вам слід використовувати Python 3 у своїх проектах, а також під час навчання кодуванню.
Далі дізнайтеся, як перевірити версію Python у Windows, Linux та macOS.