Я пишу интерпретатор для старого скриптового языка в игре, поэтому мне нужно скомпилировать словарь, в котором имя команды соответствует языку, сопоставленному с символом для этой функции.
Теперь я уже разобрался здесь: Как вызвать функцию на основе записи в списке?
... То, что вы можете вызывать функции таким образом, и я знаю, что вы можете использовать dir, чтобы получить список строк всех функций в модуле. Я смог получить этот список, и с помощью регулярных выражений удалил встроенные команды и все остальное, что я на самом деле не хочу, чтобы скрипт мог вызывать. Цель состоит в том, чтобы песочница здесь. :)
Теперь, когда у меня есть список элементов, которые определены в модуле, мне нужно получить символ для каждого определения.
Для более наглядного представления это тестовый модуль, для которого я хочу получить символ:
def notify(stack,mufenv):
print stack[-1]
Он загружается через скрипт инициализации, и я могу получить имя функции уведомления в списке, используя:
import mufprims
import re
moddefs=dir(mufprims)
primsfilter=re.compile('__.+__')
primslist=[ 'mufprims.' + x for x in dir(mufprims) if not primsfilter.match(x) ]
print primslist
Возвращает:
['mufprims.notify']
... которое является точным названием функции, для которой я хочу найти символ.
Я перечитал http://docs.python.org/library/symtable.html здесь, но я не уверен, что понимаю это. Я думаю, что это ключ к тому, чего я хочу, но я не видел примера, который мог бы понять. Есть идеи, как получить символ для функций, которые я выбрал из списка?