Словарь встроенных методов в Python

Я пытаюсь создать словарь встроенных методов, но я получаю вывод, как показано ниже. Почему это происходит? Я просто хочу это понять.

>>>
>>> dict = {'a': print('avc'), 'b': print('bbbb'), 'c': print('aaa')}
avc
bbbb
aaa
>>> dict
>>> {'a': None, 'b': None, 'c': None}
>>>

Кроме того, если кто-то пытается понять, откуда я иду, он может взглянуть на этот вопрос: Ссылка на вопрос, который я пытался решить, когда я подумал, что это будет полезно.

3 ответа

Решение

Потому что вы вызываете функцию print пока словарь создан. Вы сохраняете результат вызовов в словаре, а не функцию print, В результате ваш словарь будет заполнен None значения, представляющие возвращаемое значение print звонки.

То, что вы должны сделать, это иметь такую ​​структуру:

d = {'abc': print} 

И теперь ваш словарь будет хранить актуальную функцию {'abc', <function print>}

Затем вы можете вызвать эти функции, просматривая значения словаря:

for str, func in d.items():
    func(str)

# prints abc

Кроме того, вы должны избегать использования таких имен, как dict для ваших переменных. Они маскируют встроенные типы для Python (в вашем случае dict встроенный тип).

Обычно выбирают другие имена, например d,

print это функция, которая выводит материал на экран и возвращает None

Когда вы делаете присваивание, вы говорите: "хеш-значение равно тому, что возвращает print (" avc ")"

Это означает print("avc") вызывается (именно поэтому вы видите напечатанное значение), и он возвращает None, поэтому значение a в вашем диктовке равно None.

Печать не возвращает значение.

Представьте, что это определение, как это

(void) print(object):
   do magic io stuff to make object appear in the console

Поэтому, когда вы назначаете print('avc') для ключа 'a' в словаре, он получает none.

Другие вопросы по тегам