Что делает этот код Python? - PullRequest
0 голосов
/ 21 марта 2012
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 ]

2 голосов
/ 21 марта 2012

Этот код приблизительно эквивалентен 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',)
  • Обратите внимание, что файл перезаписывается, файл не добавляется.
0 голосов
/ 21 марта 2012

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

0 голосов
/ 21 марта 2012

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

0 голосов
/ 21 марта 2012

Записывает исключение в logfile.txt.

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

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

0 голосов
/ 21 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...