2016-08-22 151 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和沒有按」進入這個腳本的while循環。

當我運行script1.py時,它會打印abc。

當我在一起運行,在不同的終端,都打印abc。

我需要它,這樣當兩個腳本都運行時,script2.py可以在進入while循環時更改變量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 
相關問題