>>> print('globals:', globals()) # немного переформатировано для представления
globals: {'animal': 'fruitbat',
'__doc__': None,
'change_local': <function change_it at 0x1006c0170>,
'__package__': None,
'__name__': '__main__',
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__builtins__': <module 'builtins'>}
>>> animal
'fruitbat'
Обработка ошибок с помощью try и except
137
Локальное пространство имен внутри функции change_local() содержало толь-
ко локальную переменную animal. Глобальное пространство имен содержало от-
дельную глобальную переменную animal и многое другое.
Использование _ и __ в именах. Имена, которые начинаются с двух нижних
подчеркиваний (__), зарезервированы для использования внутри Python, поэтому
вам не следует применять их для своих переменных. Этот шаблон именования
был выбран потому, что разработчики, скорее всего, не будут использовать его для
создания имен своих переменных.
Например, имя функции находится в системной переменной функция .__name__,
а имя ее строки документации — функция .__doc__:
>>> def amazing():
... '''This is the amazing function.
... Want to see it again?'''
... print('This function is named:', amazing.__name__)
... print('And its docstring is:', amazing.__doc__)
...
>>> amazing()
This function is named: amazing
And its docstring is: This is the amazing function.
Want to see it again?
Как вы видели ранее в содержимом globals, основной программе присвоено
специальное имя __main__.
Обработка ошибок
с помощью try и except
Делай или не делай. Не надо пытаться.
Йода
В некоторых языках программирования ошибки отображаются с помощью специ-
альных возвращаемых значений. В Python используются исключения: код, который
выполняется, когда происходит связанная с ним ошибка.
Нечто похожее вы уже видели, когда попытались получить доступ к не входящей
в список/кортеж позиции или ключу, которого не существует в словаре. Когда вы
выполняете код, который при некоторых обстоятельствах может не сработать, вам
также понадобятся обработчики исключений, чтобы перехватить любые потенци-
альные ошибки.
Хорошим тоном является использование обработчиков исключений везде, где
может быть сгенерировано исключение, чтобы пользователь знал, что происходит.
Вы можете быть неспособны исправить ошибку, но по крайней мере можете узнать,