Константы, имена функций, del и NameError в Python
Обновлено:
1. Что такое константа
Константа — это переменная, значение которой не должно изменяться во время работы программы.
Например:
PI = 3.14
В переменной PI хранится число π.
Если программе во всех вычислениях нужно одно и то же значение, его можно записать в константу.
Ещё примеры:
LESSON_PRICE = 1500
FILE_NAME = 'data.txt'
MAX_LENGTH = 100
COUNTRY_NAME = 'Georgia'
2. Как называются константы
Имена констант записываются полностью в верхнем регистре.
Обычная переменная:
lesson_price = 1500
Константа:
LESSON_PRICE = 1500
Если имя константы состоит из нескольких слов, слова разделяются нижним подчёркиванием:
FILE_NAME = 'data.txt'
MAX_TEXT_LENGTH = 100
DEFAULT_USER_NAME = 'Anna'
Правильно:
PI = 3.14
LESSON_PRICE = 1500
FILE_NAME = 'data.txt'
Неправильно для константы:
pi = 3.14
lessonPrice = 1500
FileName = 'data.txt'
3. Где создаются константы
Как правило, константы создаются в начале файла.
PI = 3.14
LESSON_PRICE = 1500
FILE_NAME = 'data.txt'
first_name = 'Anna'
age = 25
print(first_name)
print(age)
Сначала записываются константы, а после них — основной код программы.
В больших программах константы также могут храниться в отдельном файле.
Например:
constants.py
Подключение одного файла к другому будем изучать позже.
4. Можно ли изменить константу
Программист может открыть файл и вручную изменить значение константы.
Например, сначала использовалась такая точность числа π:
PI = 3.14
Позже программисту понадобилась более высокая точность:
PI = 3.14159
Или изменилось название файла:
FILE_NAME = 'old_data.txt'
Программист изменил его:
FILE_NAME = 'new_data.txt'
Это изменение исходного кода самим программистом.
Во время работы программы значение константы изменяться не должно.
5. Важная особенность констант в Python
Python технически позволяет перезаписать константу:
PI = 3.14
PI = 10
Такой код запустится, но писать так неправильно.
Запись имени полностью в верхнем регистре сообщает программистам:
Это константа. Её значение изменять не нужно.
Поэтому константа в Python — это соглашение между программистами.
Правильно:
PI = 3.14
radius = 10
circle_length = 2 * PI * radius
Неправильно:
PI = 3.14
PI = 10
6. Константа и обычная переменная
Константа используется для значения, которое не должно изменяться:
LESSON_PRICE = 1500
Обычная переменная может изменяться:
student_age = 15
student_age = 16
Ещё пример:
PI = 3.14
radius = 5
radius = 10
PI — константа.
radius — обычная переменная.
7. Нельзя использовать имена функций для переменных
Мы уже изучили две функции:
print()
len()
Имена этих функций нельзя использовать для создания своих переменных.
Неправильно:
len = 10
Неправильно:
print = 'Hello'
В этих примерах переменные перезаписывают ссылки на функции len и print.
После этого функции перестают нормально работать.
8. Что произойдёт при использовании имени len
Неправильный код:
len = 10
Теперь имя len ссылается на число 10, а не на функцию.
Поэтому такой вызов приведёт к ошибке:
len('Hello')
Функция len() больше недоступна под своим обычным именем.
Поэтому так писать нельзя:
len = 10
Лучше выбрать понятное имя:
text_length = 10
9. Что произойдёт при использовании имени print
Неправильный код:
print = 'Hello'
Теперь имя print ссылается на строку 'Hello', а не на функцию.
Поэтому такой вызов приведёт к ошибке:
print('Python')
Функция print() больше недоступна под своим обычным именем.
Лучше использовать другое имя:
message = 'Hello'
print(message)
Результат:
Hello
10. Нижнее подчёркивание после имени функции
Если очень нужно использовать имя, похожее на имя функции, в конце можно поставить нижнее подчёркивание:
len_ = 10
print_ = 'Hello'
Такие имена допустимы.
Но лучше придумать более понятные имена:
text_length = 10
message = 'Hello'
Понятное имя переменной лучше имени с нижним подчёркиванием в конце.
11. Ключевое слово del
Ключевое слово del позволяет удалить переменную.
Создадим переменную:
age = 25
Удалим её:
del age
После выполнения del age переменной age больше не существует.
12. Обращение к удалённой переменной
Пример:
age = 25
del age
print(age)
Строка:
print(age)
приведёт к ошибке NameError.
Переменная age была удалена, поэтому Python не может её найти.
13. Удаление переменной со строкой
message = 'Hello'
print(message)
del message
До удаления функция print() выведет:
Hello
После выполнения:
del message
переменной message больше не существует.
14. Удаление нескольких переменных
С помощью del можно удалить сразу несколько переменных.
a = 10
b = 20
c = 30
del a, b, c
После этого переменные a, b и c больше не существуют.
Можно удалить только часть переменных:
a = 10
b = 20
c = 30
del a, b
Переменные a и b удалены.
Переменная c продолжает существовать:
print(c)
Результат:
30
15. del и каскадное присваивание
Создадим несколько ссылок на один объект:
value = a = b = 'Hello'
Теперь переменные value, a и b ссылаются на строку 'Hello'.
Удалим переменную a:
del a
Переменная a больше не существует.
Но переменные value и b продолжают работать:
print(value)
print(b)
Результат:
Hello
Hello
Ключевое слово del удалило только ссылку a.
16. Удаление нескольких ссылок
value = a = b = 'Python'
Удалим две ссылки:
del a, b
Переменные a и b больше не существуют.
Но переменная value продолжает существовать:
print(value)
Результат:
Python
17. Удаление несуществующей переменной
Если попытаться удалить переменную, которая не существует, программа завершится с ошибкой NameError.
del age
Если переменная age ранее не была создана, Python не сможет её найти.
Будет ошибка:
NameError
18. Повторное удаление переменной
Создадим и удалим переменную:
age = 25
del age
Попытаемся удалить её ещё раз:
del age
Будет ошибка NameError.
После первого удаления переменная уже не существует.
19. Переменную нужно создать до обращения к ней
Python выполняет код сверху вниз.
Поэтому переменная должна быть создана до того места, где мы к ней обращаемся.
Неправильно:
print(first_name)
first_name = 'Anna'
Будет ошибка NameError.
В момент выполнения строки:
print(first_name)
переменная first_name ещё не существует.
То, что она создаётся ниже, не помогает.
20. Правильный порядок кода
Сначала нужно создать переменную:
first_name = 'Anna'
После этого к ней можно обращаться:
print(first_name)
Полный правильный пример:
first_name = 'Anna'
print(first_name)
Результат:
Anna
21. Переменная внутри выражения
Все переменные, которые используются в выражении, должны быть созданы заранее.
Неправильно:
total_price = product_price * product_count
product_price = 100
product_count = 3
Будет ошибка NameError.
Правильно:
product_price = 100
product_count = 3
total_price = product_price * product_count
print(total_price)
Результат:
300
22. Функция len() и порядок создания переменных
Неправильно:
text_length = len(text)
text = 'Hello'
Переменная text используется до её создания.
Будет ошибка NameError.
Правильно:
text = 'Hello'
text_length = len(text)
print(text_length)
Результат:
5
23. Основные правила урока
Константы:
PI = 3.14
Имена констант записываются в верхнем регистре:
LESSON_PRICE = 1500
Константы обычно создаются в начале файла или хранятся в отдельном файле.
Во время работы программы константы изменяться не должны.
Нельзя использовать имена изученных функций для переменных:
len = 10
print = 'Hello'
Ключевое слово del удаляет переменные:
del age
Можно удалить несколько переменных:
del a, b
Если обратиться к несуществующей переменной, будет ошибка NameError.
Переменные необходимо создавать до первого обращения к ним.
Домашнее задание
Часть 1. Задания в IDLE
Задание 1
Создать четыре константы:
- число π;
- стоимость урока;
- название файла;
- максимальную длину текста.
Имена констант должны быть записаны полностью в верхнем регистре.
Вывести каждую константу через отдельный вызов print().
Задание 2
Определить, какие имена правильно подходят для констант:
PI
pi
LESSON_PRICE
lesson_price
FileName
FILE_NAME
maxLength
MAX_LENGTH
Неправильные имена переписать правильно.
Задание 3
Создать переменную:
message = 'Hello'
Вывести её через print().
Затем удалить переменную:
del message
После удаления снова попробовать обратиться к ней и посмотреть, какая ошибка появится.
Задание 4
Создать три переменные с помощью множественного присваивания:
a, b, c = 10, 20, 30
Удалить переменные a и b одной строкой.
После этого вывести переменную c.
Задание 5
Создать несколько ссылок с помощью каскадного присваивания:
value = first_value = second_value = 'Python'
Удалить переменную first_value.
После этого вывести:
print(value)
print(second_value)
Объяснить, почему эти переменные продолжают работать.
Часть 2. Задания в Visual Studio Code
Задание 6. Файл с константами
Создать отдельный файл:
constants_practice.py
В начале файла создать константы:
PI = 3.14
LESSON_PRICE = 1500
FILE_NAME = 'students.txt'
MAX_TEXT_LENGTH = 100
После констант создать обычные переменные:
radius = 10
student_name = 'Anna'
text = 'Hello'
Вычислить:
circle_length = 2 * PI * radius
text_length = len(text)
Вывести через отдельные вызовы print():
PI;LESSON_PRICE;FILE_NAME;MAX_TEXT_LENGTH;circle_length;student_name;text_length.
Добавить комментарии, которые отделяют константы от основного кода.
Задание 7. Имена функций
Создать отдельный файл:
function_names.py
Сначала записать неправильный пример:
len = 10
len('Hello')
Запустить файл и посмотреть, что произойдёт.
После этого исправить код:
text_length = 10
print(text_length)
print(len('Hello'))
Затем отдельно проверить неправильный пример:
print = 'Hello'
print('Python')
После проверки исправить имя переменной:
message = 'Hello'
print(message)
Задание 8. Нижнее подчёркивание после имени
В файле:
function_names.py
создать переменные:
len_ = 10
print_ = 'Hello'
Затем придумать для них более понятные имена.
Вместо len_ использовать имя, которое объясняет, что хранится в переменной.
Вместо print_ также использовать понятное имя.
Задание 9. Удаление переменных
Создать отдельный файл:
delete_variables.py
Создать переменные:
first_name = 'Anna'
last_name = 'Ivanova'
age = 25
lesson_price = 1500
Вывести все переменные.
Затем удалить:
del age, lesson_price
После удаления вывести только оставшиеся переменные.
Задание 10. Удаление ссылок
В файле:
delete_variables.py
добавить код:
value = first_text = second_text = 'Hello'
Удалить переменную first_text.
Вывести value и second_text.
Затем удалить обе оставшиеся переменные одной строкой.
Задание 11. Ошибка NameError
Создать отдельный файл:
name_error_practice.py
Записать неправильный код:
print(city)
city = 'Mestia'
Запустить файл и посмотреть ошибку.
После этого исправить порядок строк:
city = 'Mestia'
print(city)
Задание 12. Переменная в выражении
В файле:
name_error_practice.py
сначала записать неправильный код:
total_price = product_price * product_count
product_price = 250
product_count = 4
print(total_price)
Запустить программу и посмотреть ошибку.
После этого переставить строки в правильном порядке.
Ожидаемый результат после исправления:
1000
Задание 13. len() и порядок строк
Записать неправильный код:
text_length = len(text)
text = 'Programming'
print(text_length)
Объяснить причину ошибки.
После этого исправить порядок строк и запустить программу.
Часть 3. Итоговая задача
Задание 14
Создать отдельный файл:
lesson_five_task.py
В программе нужно:
- в начале файла создать три константы;
- использовать только правильные имена в верхнем регистре;
- добавить комментарий с описанием каждой константы;
- создать три обычные переменные с помощью множественного присваивания;
- создать две переменные с одинаковым значением с помощью каскадного присваивания;
- использовать функцию
len()для определения длины строки; - вывести значения через отдельные вызовы
print(); - удалить одну переменную с помощью
del; - удалить ещё две переменные одной строкой;
- не использовать имена
lenиprintдля собственных переменных; - расположить все строки в правильном порядке, чтобы не возникла ошибка
NameError.