-2

重複の可能性:
Python で eval を使用して変数の値を割り当てるにはどうすればよいですか?

Pythonを使って文字列内にある変数に値を代入したい

そう仮定します

y = 'x  = 5' 
eval(y) # does not work

この式を評価するものが欲しいのでx = 5、Pythonで

4

3 に答える 3

1

exec代わりに試してください:

In [8]: y = 'x  = 5'

In [9]: exec(y)

In [10]: x
Out[10]: 5

ただし、と同様にeval、ここにはセキュリティ上の懸念があると思います(たとえば、この記事を参照)。したがって、可能であれば、別の角度からアプローチすることをお勧めします。なぜevalうまくいかないのかというと、Python式のように文字列を評価しているからです。したがって、と言うとx = 5、結果は返されません。exec一方、ステートメントを実行し、この場合はx = 5プログラムに設定されます。

于 2012-11-19T20:14:06.930 に答える
1

execこれには次のステートメントを使用できます。

exec y

(Python 3 では、ステートメントではなく関数です。)

ただし、おそらくそうすべきではありません。ユーザー入力テキストでこれを行うと、セキュリティ上のリスクが生じます。また、コードを実行するスコープによっては、予期しないこともできます。詳細については、ドキュメントを参照してください。通常、やりたいことを行うには、 を使用するよりも良い方法がありますexec

于 2012-11-19T20:15:32.120 に答える
0

を探していexecます。

y = 'x  = 5' 
exec(y)
print x
于 2012-11-19T20:15:46.780 に答える