2016-08-22 10 views
0

私は関数とwhileループを持つpythonスクリプトを持っています。この関数をwhileループも持つ別のpythonスクリプトから呼びたいと思います。ここではスクリプトの例は次のとおりです。whileループで別のpythonスクリプトから関数を呼び出す

script1.py:

global printline 
printline = abc 

def change(x): 
    global printline 
    printline = x 

while True: 
    global printline 
    print printline 

そして、これはscript2.pyです:

from script1 import change 

change(xyz) 

while True: 
    print hello 

私はscript2.pyを実行すると、それは「ABCを印刷し、doesnのを開始しますこのスクリプトのwhileループに入ります。

script1.pyを実行すると、abcが出力されます。

私は両方の端末を同時に実行すると、両方ともabcを表示します。

両方のスクリプトを実行すると、whileループに入る間にscript2.pyが変数printlineを変更できるようにする必要があります。

これは私がpythonを初めて使ったときにこれを行う正しい方法であるかどうかわかりません。

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

+1

人は、おそらくあなたの実際のスクリプトすることはできません。あなたは 'abc'と' xyz'に "名前は定義されていません"というエラーはありませんか?問題が発生している実際のコードをそのまま残してください。さもなければ誰もができることは推測です。 –

+0

これらのスクリプトは、同じ 'printline'変数を共有する別々のプログラムであるはずですか?のように、両方のスクリプトが同時に実行されるとき、同じ 'printline'変数を共有しますか? –

+0

'abc'と' xyz'は文字列 '' abc "'と '' xyz "'であるはずですか? – Barmar

答えて

1

from script1 import changeを実行すると、script1.pyのすべての最上位コードが実行されます。したがって、無限にループするwhile True:ブロックが実行され、script2.pyに返されることはありません。

script1.pyを分割して、トップレベルコードを実行せずにchange()関数をインポートする必要があります。

change.py:

def change(x): 
    global printline 
    printline = x 

script1.py:

from change import change 

change("abc") 
while True: 
    print printline 

script2.py:

from change import change 

change("xyz"); 
while True: 
    print printline 
関連する問題