2016-06-13 3 views
1

私はプロジェクトのために、このような何かをしようとしている:EXEC()は、ちょうど新しいセッションを開始し、私の関数や変数を無視するため私の変数をインポートしてexec()のようなことをするには?

def printhi(): 
    print("Hi") 
myinput = input() # for example printhi() 
exec(myinput) 

は、今私は、エラーを取得します。どうすれば変更できますか?

x = 10 
exec("print(x)", globals(), locals()) # Prints "10" 

更新:

答えて

2

exec組み込みは、ローカルおよびグローバルスコープに渡すために使用できる2つの追加引数取るあなたの例を考えると、私は「より良い」溶液(以上、少なくとも何かを考えます現実的な)はexecを使用しないことです。ユーザーが指定した関数を呼び出すには、

mypinput = input() 
choices = {'printhi': printhi} 
if myinput in choices: 
    function = choices[myinput] 
    function() 
else: 
    print("Unknown function", myinput) 
+0

ありがとうございます。 :) –

+0

あなたも大歓迎です:Stack Overflowへようこそ。参照してください:http://stackoverflow.com/help/someone-answers –

+0

ありがとう、それは単純な例にすぎません。 私はmessenger Discordのボットをコーディングしています。このように Execute-Commandを作成します。 *私はボットに構文エラーがあります –

関連する問題