Сохранение
данных
207
программа запускается впервые, то файл
username .json
не существует, и происходит
исключение
FileNotFoundError
. Python переходит к блоку
except
, в котором
пользователю предлагается ввести имя
. Затем программа вызывает
json.dump()
для сохранения имени пользователя и выводит приветствие
.
Какой бы блок ни выполнялся, результатом является имя пользователя и соот-
ветствующее сообщение. При первом запуске программы результат выглядит
так:
What is your name?
Eric
We'll remember you when you come back, Eric!
Если же программа уже была выполнена хотя бы один раз, результат будет таким:
Welcome back, Eric!
Рефакторинг
Часто возникает типичная ситуация: код работает, но вы понимаете, что его струк-
туру можно усовершенствовать, разбив его на функции, каждая из которых ре-
шает свою конкретную задачу. Этот процесс называется
рефакторингом
(или
переработкой). Рефакторинг делает ваш код более чистым, понятным и простым
в расширении.
В процессе рефакторинга
remember_me .py
мы можем переместить основную часть
логики в одну или несколько функций. Основной задачей
remember_me .py
является
вывод приветствия для пользователя, поэтому весь существующий код будет пере-
мещен в
функцию
greet_user()
:
remember_me.py
import json
def greet_user():
"""Приветствует пользователя по имени."""
filename = 'username.json'
try:
with open(filename) as f_obj:
username = json.load(f_obj)
except FileNotFoundError:
username = input("What is your name? ")
with open(filename, 'w') as f_obj:
json.dump(username, f_obj)
print("We'll remember you when you come back, " + username + "!")
else:
print("Welcome back, " + username + "!")
greet_user()
С переходом на функцию комментарии дополняются строкой документации, кото-
рая описывает работу кода в текущей версии
. Код становится немного чище, но
функция
greet_user()
не только приветствует пользователя — она также загружает
хранимое имя пользователя, если оно существует, и запрашивает новое имя, если
оно не было сохранено ранее.