Найти - Пользователи
Полная версия: словари и функции
Начало » Python для новичков » словари и функции
1
SomethingButNotNickName
Добрый день. Есть такой код:
 def first():
    print('first')
def second():
    print('second')
def third():
    print('third')  
do = {
    '1': first(),
    '2': second(),
    '3': third()
}
do['1']
Результат выполнения:
 first
second
third
т.е. выполнились все три функции, а не та на которую указывает ключ. Почему?
Вопрос собственно не в том как исправить код для вызова конкретной функции из словаря, а почему его не происходит?.
Питон независимо от ключа загружает весь словарь целиком?
И, натыкаясь на вызов функции, выполняет его независимо от ключа?




FishHook
SomethingButNotNickName
Потому что вы не видите разницы между функцией как переменной и её вызовом

 do = {
    '1': first(),        # Вызвал функцию
    '2': second(),   # Вызвал функцию
    '3': third().      # Вызвал функцию
}

А в словаре у тебя все значения None, потому что там РЕЗУЛЬТАТЫ вызова функций, а не сами функции.
SomethingButNotNickName
FishHook
SomethingButNotNickNameПотому что вы не видите разницы между функцией как переменной и её вызовом

Если я чего то не вижу, то Вам, как более опытному человеку, неплохо бы показать что, что я не вижу. А не ограничиваться общими фразами не отвечающими на поставленный вопрос.

Тем более, что это разницу я вижу, и то, что в словаре будут None понимаю.
FishHook
SomethingButNotNickName
SomethingButNotNickName
что в словаре будут None понимаю
Ну если понимаешь, то что ты хочешь получить вот этим?
 do['1']
None? Ну разумно же, раз там None и ты об этом знаешь?

SomethingButNotNickName
А не ограничиваться общими фразами не отвечающими на поставленный вопрос.
Я надеялся, что ты сам догадаешься, но раз ты думать головой не хочешь, то вот решение

 do = {
    '1': first,        
    '2': second,   
    '3': third     
}
do['1']()

можно не благодарить
SomethingButNotNickName
А благодарить то не за что.
SomethingButNotNickName
Вопрос собственно не в том как исправить код для вызова конкретной функции из словаря, а почему его не происходит?.

PEHDOM
SomethingButNotNickName
Вопрос собственно не в том как исправить код для вызова конкретной функции из словаря, а почему его не происходит?.
потому что вы его не вызываете, вам же уже обьясняли.
 def first():
    print('first')
a['1']  = first() # вызов функции и присваивание результата работы функции ключу '1' словаря а
# оно выведет 'first', но значение в словаре будет None так как функция ничего не возвращает
a['1'] = first    #  ключу '1' словаря а теперь ссылаеться на функцию first
# оно ничего не выведет , значение ключа бдет чтото типа такого <function first at 0x02E66660>
a['1']()           # вызов функции first, оно напечатает  'first'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB