Це фрагмент книги Python з нуля, яка допоможе вам навчитися програмуванню з нуля. Ви можете знайти його на Allegro, Empik та в інтернет-книгарнях.
Ми вже дізналися про кілька типів значень і операції, які можна між ними виконувати. Тобі може бути цікаво, для чого вони потрібні. Навіщо писати "Привіт, " + "Михайле", якщо можна було б одразу написати "Привіт, Михайле"? Це пов’язано з тим, що зазвичай різні частини походять з різних місць. Наприклад, привітання може виглядати так: "Привіт, " + user_name, де user_name вказуватиме на ім’я, яке користувач увів в іншому місці. Тут user_name буде змінною. Що це означає? Дізнаємося у цьому розділі.
Визначення змінних
Щоб створити змінну в Python, достатньо задати їй ім’я, використати символ присвоєння = (одинарний знак дорівнює) і праворуч від нього вказати значення цієї змінної.
a =10print(a)# 10b ="Привіт"print(a)# 10print(b)# Привіт
Символ присвоєння змінної = має мало спільного з оператором порівняння ==, який ми розглядали раніше. Їх не варто плутати. == порівнює два значення та повертає True або False. = присвоює значення змінній.
Зміна значення змінної відбувається так само, як і присвоєння.
Визнач змінну з назвою num і надай їй значення 10. Виведи це значення за допомогою функції print. Потім надай змінній num значення 20 і знову виведи це значення.
Відповіді в кінці книги.
Називання змінних
При називанні змінних можна використовувати великі та малі літери, цифри та символ підкреслення _. Назва змінної не може починатися з цифри.
Існують різні системи називання змінних, але доброю практикою вважається snake_case, згідно з якою назви пишуться малими літерами, а слова розділяються символом підкреслення _. Якщо ми маємо кілька змінних зі схожими значеннями, у кінці додаємо цифру (наприклад, name1, name2).
У програмуванні використовуються назви англійською мовою. Дуже рідко робляться винятки для власних назв. Використання польських слів або слів іншою мовою в назвах змінних може бути прийнятним на курсах для початківців, але в комерційних проєктах це вважається непрофесійним.
Коли ми називаємо змінну, рекомендую спершу:
Подумати, на що вона буде вказувати (припустімо, нам потрібна змінна, яка міститиме адреси фотографій користувачів).
Назвати її якомога коротше англійською мовою (у нашому прикладі це може бути "user image url").
Записати це в нотації snake_case (у нашому прикладі це буде "user_image_url").
Ось кілька прикладів правильно названих змінних:
user_name
is_tea_time
user_group_key
user1, user2
Ось кілька прикладів змінних з ненайкращими назвами:
bookscollection — так неправильно, оскільки collection — це окреме слово, яке має відділятися знаком підкреслення _ або починатися з великої літери (краща версія books_collection);
1book — неправильно, оскільки число не може стояти на першому місці (краща версія one_book);
lista_książek — неправильно, тому що змінні слід називати англійською мовою (кращий варіант book_list або books).
У наступних частинах книги Ти побачиш ще багато прикладів правильно названих змінних. Зверни на них увагу.
Вправа: Називання змінних
Як думаєш, які з наведених нижче змінних названі вдало?
public_workshops
1_way_ticket
arbitrary_user
note_type
user_Maciek
post_user_request
szkolenie_warszawa
Відповіді в кінці книги.
Надання значень, які розширюють змінну
У програмуванні часто трапляється так, що замість того, щоб повністю змінювати значення змінної, нам потрібно просто щось до нього додати або відняти. Наприклад, ми можемо дописувати нові продукти до списку покупок або додати нове значення до загальної суми.
Щоб додати щось до наявної змінної, достатньо встановити для неї нове значення як суму поточного значення та значення, яке Ти хочеш додати.
cart_list =""cart_list = cart_list +"Полуниця, "# "" + "Полуниця, " дає "Полуниця, "print(cart_list)# "Полуниця, "cart_list = cart_list +"Груша, "# "Полуниця, " + "Груша, "# дає "Полуниця, Груша, "print(cart_list)# "Полуниця, Груша, "cart_list = cart_list +"Томат"# "Полуниця, Груша, " + "Томат" дає# "Полуниця, Груша, Томат"print(cart_list)# "Полуниця, Груша, Томат"num =0num = num +1# 0 + 1 дає 1print(num)# 1num = num +2# 1 + 2 дає 3print(num)# 3num = num +3# 3 + 3 дає 6print(num)# 6
Оскільки такий спосіб зміни значень дуже популярний, було зроблено скорочений запис. Замість того, щоб писати x = x + y, можна використовувати оператор += і писати x += y.
Змінна нагадує аркуш паперу з номером сховища, яке містить значення. Коли інтерпретатор бачить вираз "Привіт," + user_name, то хотів би по обидві сторони від плюса мати значення, натомість з однієї сторони стоїть змінна. Ця змінна містить адресу, за якою знаходиться потрібне значення. Тож інтерпретатор прямує туди та знаходить потрібне ім’я користувача. Ось чому я кажу, що змінні не містять значень, а вказують на них.
Припустімо, коли ми запитуємо значення user_name, змінна вказує на "Міхал". Коли ми налаштуємо її так, щоб вона вказувала на "Марцін", попереднє значення забувається. Коли ми запитуватимемо значення user_name, ми отримуватимемо значення, на яке змінна вказує зараз, тобто "Марцін".
user_name ="Міхал"print(user_name)# Міхалuser_name ="Марцін"print(user_name)# Марцін
Ця тонка метафора допомагає з більш складним використанням змінних. Що робити в ситуації, коли ми присвоїмо змінній значення іншої змінної? Варто пам’ятати, що змінні вказують на значення, а не на інші змінні. Наступна проблема часто вводить в оману навіть досвідчених розробників, що інколи призводить до серйозних помилок у застосунках. Однак все стане зрозумілішим, коли ми зрозуміємо метафору вказування на значення, яка чітко демонструє, як насправді працюють змінні.
a =10b = a
a =20print(b)# 10,# оскільки b вказує на значення 10, а не на зміннуprint(a)# 20
Представлена тут картина дещо ускладниться, коли ми введемо мутації значень. Про це йтиметься пізніше.
f-стрінги
Часто буває так, що ми хочемо вставити значення змінної в текстове значення. Якщо змінна також містить значення типу стрінг, такі значення можна додати за допомогою плюса.
name ="Алла"print("Ім’я — це "+ name)# Ім’я — це Алла
Однак якщо змінна містить значення іншого типу, наприклад int, то перед додаванням необхідно змінити значення на рядок. Ми можемо зробити це за допомогою str, як у прикладі нижче.
value =1234print("Значення — це "+str(value))# Значення — це 1234
Втім є простіший спосіб. Оскільки змінні надзвичайно часто мають текстове значення, для рядків було створено спеціальний запис (його було введено у версії 3.6). Він характеризується тим, що перед лапками, від яких починається рядок, ми ставимо літеру "f". Коли ми так зробимо, ми можемо помістити в текстове значення назву змінної у фігурних дужках, а на її місці буде розміщене значення цієї змінної, перетворене на рядок.
value =1234print(f"Значення — це {value}")# Значення — це 1234
Текстові значення, записані таким чином, відомі як f-рядки. Це дуже популярний запис, який ми ще багато разів побачимо в цій книзі.
a ="A"b ="B"print(f"a = {a}, b = {b}")# a = A, b = B
Присвоєння значень кільком змінним
У Python можна присвоювати значення багатьом змінним одночасно. Наприклад, якщо ми хочемо, щоб і a, і b були рівними 1, ми можемо зробити це за допомогою двох присвоєнь, або за допомогою a = b = 1.
a = b =1print(a)# 1print(b)# 1# альтернатива доa =1b =1print(a)# 1print(b)# 1
Якщо ми хочемо надати різні значення для a і b, це також можна зробити одним рядком. У цьому випадку ми спочатку визначаємо змінні, яким хочемо присвоїти значення (розділяємо їх комами), ставимо дорівнює та визначаємо їх значення одне за одним.
a, b =1,2print(a)# 1print(b)# 2# альтернатива доa =1b =2print(a)# 1print(b)# 2
Одним із способів використання такого запису є заміна значень таким чином, щоб a отримала значення b, а b — значення a.
a, b =1,2print(a)# 1print(b)# 2a, b = b, a
print(a)# 2print(b)# 1
Особливе значення None
Є особливе значення None, яке означає відсутність значення. Воно часто встановлюється як значення щойно створеної змінної, коли ми хочемо створити змінну, але ще не маємо жодного її значення. None використовується також, щоб позбутися значення змінної. Далі в книзі ми побачимо деякі практичні приклади щодо цього.
name =Noneprint(name)# Nonename ="Марцін"print(name)# Марцінname =Noneprint(name)# None
Увага! У програмуванні регістр (розмір літер) дуже важливий. Зауваж, що None починається з великої літери. Завжди звертай увагу на регістр у своєму коді.
Щоб перевірити, чи змінна має значення None, зазвичай використовується is None замість == None.
name =Noneprint(name isNone)# Truename ="Марцін"print(name isNone)# Falsename =Noneprint(name isNone)# True
Ключове слово is перевіряє, чи з обох сторін є той самий об’єкт, тому не використовується метод __eq__, який ми розглянемо в цій книзі пізніше.
Marcin Moskala is a highly experienced developer and Kotlin instructor as the founder of Kt. Academy, an official JetBrains partner specializing in Kotlin training, Google Developers Expert, known for his significant contributions to the Kotlin community. Moskala is the author of several widely recognized books, including "Effective Kotlin," "Kotlin Coroutines," "Functional Kotlin," "Advanced Kotlin," "Kotlin Essentials," and "Android Development with Kotlin."
Beyond his literary achievements, Moskala is the author of the largest Medium publication dedicated to Kotlin. As a respected speaker, he has been invited to share his insights at numerous programming conferences, including events such as Droidcon and the prestigious Kotlin Conf, the premier conference dedicated to the Kotlin programming language.
Roman has experience in different fields: from running his own catering company to working as a professional lawyer for over 13 years. Recently working on becoming a DevOps engineer.