0

私は tkinter ウィンドウを作成する手順を自動化する手順を作成しようとしているので、open() 関数を使用して txt ファイル (おそらく .py である必要があります) を開こうとしています。ウィンドウを作成します。私が書こうとしているコードは次のとおりです。

def a_procedure():
    window = Tk()
    #rest of code necessary to make a Tkinter window

しかし、問題は、私が使用するときです

open()
textfile.write("def a_procedure()"/
"window = Tk()")

テキスト ファイルには次のようなものがあります。 def a_procedure(): window = TK() #rest of text

(a) open() を使用して複数行を記述する方法、または (b) プロシージャを使用してプロシージャを記述するより良い方法はありますか

4

3 に答える 3

5

あなたの例は、生成された関数をどのように変更するかを示していません(それらがすべて同じであれば、それらを生成する必要がないため)。そこで、関数が新しい関数を返す別の例を示します。

def make_function(first_multiplicand):
    def multiply(second_multiplicand):
        return first_multiplicand * second_multiplicand

    return multiply

次に、さまざまな量で乗算する関数を作成できます。

doubler = make_function(2)
tripler = make_function(3)
print doubler(7), tripler(7)

この方法では、ファイルを書き出してから書き出す必要はありません.py(ファイルを書き出すimportことができない場合に問題が発生する可能性があり、文字列の書式設定によって Python ソース コードを作成する必要があり、かなり醜いです)。 .

またfunctools、特にfunctools.partial;も見る価値があります。上記を次のように書き直すことができます。

import functools

def make_function(first_multiplicand):
    def multiply(first, second):
        return first * second
    return functools.partial(multiply, first_multiplicand)
于 2012-10-21T06:12:08.730 に答える