Каков результат исключения печати и почему он не соответствует выведенной строке

#python #python-3.x

#python #python-3.x

Вопрос:

В следующем блоке кода:

 dictionary = dict()
dictionary[0] = {}
        
try:
    print(dictionary[0]["tomato"])

except Exception as e:
    print(e)          # prints 'tomato'
    print(str(e))     # prints 'tomato'
    
    if str(e) == 'tomato':
        print("Not tomato")     # never prints, why?
 

Несмотря print(e) на то, что печатает 'tomato' , str(e) == 'tomato' не True
Может кто-нибудь, пожалуйста, объяснить, как это может быть?

Комментарии:

1. if str(e) == "'tomato'": — вокруг есть кавычки 'tomato' , которые являются частью строки.

2. Вы получаете KeyError, поэтому print(e) включает кавычки вокруг tomato, поскольку 'tomato' это недостающий ключ.

Ответ №1:

Эти первые два оператора печати печатают, 'tomato' включая одинарные кавычки, так что это означает, что кавычки буквально являются частью строки.

Измените свой оператор if на это:

 if str(e) == "'tomato'":
 

Комментарии:

1. Пытаясь ответить на мой вопрос, я понял, что str(e)==repr(‘tomato’) также будет работать