Я работаю со словарями в Python и ищу значение, используя:
my_dictionary_object.get("key")
Как мы все знаем, если ключ отсутствует в словаре, он вернет None
объект.
Поэтому, чтобы сохранить лишнюю строку и сделать мой код более интересным, я пытаюсь:
def my_function():
'''do some calculations'''
return missing_value_from_dictionary
Теперь вот самое интересное; когда я
my_dictionary_object.get("key", my_function())
он выполняет функцию независимо от того, отсутствует ключ или нет, поэтому я подумал, что давайте уберем скобки, и я сделал:
my_dictionary_object.get("key", my_function)
и (на всякий случай)
my_dictionary_object.get("key", lambda: my_function())
но тот, у кого нет лямбды, не выполнил (потому что он никогда не вызывался) То же самое произошло с тем, у кого лямбда.
TL; DR
Мой вопрос: почему выполняется функция, если в словаре присутствует ключ?
Это что-то, что я делаю неправильно или что-то мне здесь не хватает?