1

y.py を検討してください:

def f():
    x = 1
    y = 2

そしてx.py:

from y import f
    f()
    a = x + 1
    b = y + 1

yf() は何も返さないため、明らかに x.py は機能しません。では、あるスクリプトから別のスクリプトの所定のポイントに複数の行をコピーし、最終的に実行前に次のような x.py を作成する場合は、どのように処理すればよいでしょうか?

x = 1
y = 2
a = x + 1
b = y + 1

この単純な例には、変数宣言のみが含まれていることに注意してください。実際には、y.py には変数宣言、フロー制御、クラス、関数などが混在しています。

ご協力ありがとうございました。

4

2 に答える 2

3

プログラムの構造を再考する必要があると思います。を使用してこれを機能させることもできますがexecfile、それは恐ろしいことです。Python に名前空間とクラスがあるのには理由があります。それらを使用する必要があります。

于 2012-11-30T10:36:02.040 に答える
1

あなたが求めているのは、マクロであるインライン化メカニズムです。Pythonにはそれらがなく、正当な理由があります。あなたが最も確実に求めていることは、関数やクラスのような既存のPython構造で行うことができます。私たちが支援する場合は、より多くのコードを提供する必要があります。

基本的な例に基づいて、「f」関数からコードをリファクタリングする方法を考えてください。これにより、「x」と「y」は、独立して呼び出すことができ、で使用できる別個の関数になります。 「x.py」プログラム。多くのローカル変数はコードの臭いなので、それをより管理しやすく独立した要素にリファクタリングすることから始めます。

于 2012-11-30T10:38:49.400 に答える