私は私が欲しいもの呼び出すための関数名文字列にパラメータを入力する方法は?
str1 = 'foo1().foo2()'
para = [1,2]
を持っているのです:
str2 = "foo1(1).foo2(2)"
eval(str2)
とソートの:助けを
eval(str1)(1,2)
感謝。
私は私が欲しいもの呼び出すための関数名文字列にパラメータを入力する方法は?
str1 = 'foo1().foo2()'
para = [1,2]
を持っているのです:
str2 = "foo1(1).foo2(2)"
eval(str2)
とソートの:助けを
eval(str1)(1,2)
感謝。
format stringを保存するのはなぜですか?
str1 = 'foo1({0}).foo2({1})'
para = [1,2]
eval(str1.format(*para)) # equivalent to eval(str1.format(1,2))
ありがとう、それは動作しますが、これはファイルから 'foo1()。foo2()'を読むと別の問題が発生しますが、文字列全体に{0}と{1}を入れる必要があります。 {0}と{1}をomitteに渡してディスクに/から文字列を保存/読み込むことができますか? – user478514
@ user478514 Python 3.1以上(または2.7)を使用している場合は、書式文字列のフィールドに番号を付ける必要はありません。これは単純すぎるかもしれません(ちょうどあなたが正確に格納しているものに依存します)が、 'str1.replace( '()'、 '({})')'のようにすることもできます。 –
最初に 'eval()'を使用している理由についてお問い合わせできますか?それは一般的に悪い考えです... – Amber
私のプライベートアプリケーションのテストと監査の目的のためにデータベースに呼び出すチェーン(パラメータを持つ関数名)を格納する計画があります。後でそれらのうちのいくつかが必要なときには、sqlコマンドを使って行を取得し、それをパーサに貼り付けます。 – user478514
あなたのパラメータは常に数字ですか?または文字列ですか? – warvariuc