Что делает этот код python?

def getvalue(dictionary, name):
 try:
 return dictionary[name]
 except Exception as e:
 log = open('logfile.txt', 'w')
 log.write('%s\n' % e)
 log.close()

Что делает этот код? (Я понимаю все это, кроме части log.write, не нужно объяснять остальное, я просто добавил остальное для контекста)

5 ответов

Этот код примерно эквивалентен dictionary.get(name), за исключением того, что в случае, когда несуществующий ключ просматривается, имя несуществующего ключа также записывается в файл logfile.txt. Подобно dict.get, объект None будет возвращен функцией в этом случае, и исключение не будет повторно поднято.

Вы можете разобраться в себе, поэкспериментируя в интерпретаторе:

>>> d = {'some_key_which_exists': 'some_value'}
>>> d['some_key_which_exists']
'some_value'
>>> d['some_key_which_does_not_exist']
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
KeyError: 'some_key_which_does_not_exist'
>>> try:
... d['some_key_which_does_not_exist']
... except Exception as e:
... print '%s\n' % e
... 
'some_key_which_does_not_exist'

>>> e
KeyError('some_key_which_does_not_exist',)
</module></stdin>
  • Обратите внимание, что он переписывает файл, он не добавляет файл.


Он открывает файл с именем logfile.txt и записывает сообщение, связанное с этим исключением.


Он записывает исключение в файл logfile.txt.

% s заменяется на e (это представление строки Exception)

\n - новый символ строки.


Попытка вернуть значение словаря [name]. Если это не удастся, записывает ошибку во внешний файл.


Он "пытается" вернуть значение из словаря.

licensed under cc by-sa 3.0 with attribution.