2016-09-28 2 views
-4

Я пытаюсь добавить встроенные функции python в список, но у меня возникают проблемы. Нет ошибок, он просто не добавит функции.Есть ли способ добавить встроенные функции python в список?

До сих пор я пытался:

dictionary = [] 
dictionary.append(__builtins__) 

... но это не работает.

Есть ли способ создать список функций в python?

EDIT --------------------------------------------- ----------------

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

Например, если я печатаю;

печать ("привет") ---- работает !!

prin ("hello") ---- fail! Отсутствует 't'.

В этом случае функция Я пытаюсь создать бы вернуть строку, говоря:

Вы набранный Пе («привет»). Вы имели в виду печать («привет»)?

+0

Зачем вам это нужно? Что ты пытаешься сделать? –

+1

Пожалуйста, определите, что «не работает»: что вы ожидали, и что произошло вместо этого? –

+0

@davidism Это не работает. Во-первых, вы ошибочно написали '__builtins__', во-вторых, добавили модуль в список, а не сами встроенные. – orlp

ответ

2

Что не так, просто повторяя его и добавляя по одному?

for fn in dir(__builtins__): 
    dictonary.append(__builtins__.__dict__[fn]) 
+0

Это будет больше похоже на 'dictionary.extend (__ builtins __)' не так ли? –

1

Что вы делаете добавит сам __builtins__ словарь в списке. Вы можете сделать dictionary.extend(__builtins__.values()), чтобы добавить сами встроенные функции. Однако это добавит не только встроенные функции, но все встроенные, включая классы исключений и встроенные типы, такие как список.

В отсутствие каких-либо объяснений того, что вы на самом деле пытаетесь достичь, я не буду вдаваться в подробности о вариантах этого подхода.

+0

Я добавил то, что я делаю, к моему первоначальному вопросу выше. – MotzyMitten

0

Try:

dictionary.extend(__builtins__.__dict__.values()) 
+0

@ себя почему ты так думаешь? –

0

[f.__qualname__ for _, f in __builtins__.__dict__.items() if type(f).__name__ == 'builtin_function_or_method']

или удалить __qualname__ если вы хотите только сами функции

Это помогло:

How to iterate through a module's functions

выход:

['ord', 'exec', 'iter', 'open', 'globals', 'hasattr', 'abs', 'eval', 'dir', 'pow', 'len', 'oct', 'repr', 'ascii', 'input', 'sum', 'min', 'hex', 'max', 'round', 'all', 'issubclass', 'hash', 'compile', 'divmod', 'bin', 'vars', 'callable', 'id', 'print', 'next', 'setattr', 'delattr', '__build_class__', 'chr', 'any', 'getattr', 'format', '__import__', 'sorted', 'locals', 'isinstance'] 
Смежные вопросы