私は古いゲーム内のスクリプト言語用のインタプリタを作成していますので、その関数のシンボルと一致する言語からのコマンド名を持つ辞書をコンパイルする必要があります。あなたはこのような機能を呼び出すことができます... How to call a function based on list entry?Pythonのモジュールでdefのシンボルを取得
を、そして私はあなたがモジュール内のすべての関数の文字列のリストを取得するには、dirを使用できることを知っている:
今、私はすでにここに考え出しました。私はこのリストを手に入れることができましたし、正規表現を使って組み込みのコマンドを削除しました。それ以外のスクリプトは実際にスクリプトが呼び出せないようにしています。目標はここにサンドボックスすることです。 :)
モジュールに定義されている項目のリストがありましたので、各定義のシンボルを取得する必要があります。より視覚的に表現するために
、これは私がのための記号を取得したいテストモジュールです:
def notify(stack,mufenv):
print stack[-1]
これはinitスクリプト経由で引っ張られ、私はに通知し、関数の名前を取得することができています使用してリスト:
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']
を...の正確な名称でありますfunction私はシンボルを探したい。 ここではhttp://docs.python.org/library/symtable.htmlを読みましたが、わかりません。私はこれが私が欲しいものの鍵だと思っていますが、理解できる例は見当たりませんでした。どのようなアイデアを私はリストから引っ張った機能のシンボルを得るだろうか?
正規表現の名前をテストするのではなく、 'inspect'モジュールを見ましたか? http://docs.python.org/library/inspect.html#inspect.isroutine – jdi