我寫了一些python代碼來控制一些USB(電氣繼電器和溫度傳感器)和RS232(真空計)設備。在這個主要腳本中(例如,myscript.py
),我想導入一個模塊(例如,exp_protocols.py
),其中我定義了不同的實驗協議,即一系列打開或關閉繼電器的指令,讀取溫度和壓力值,流入控制(例如「等到溫度超過200攝氏度」)。從模塊內部訪問全局變量
我最初的嘗試是這樣的:
switch_A = Relay('A')
switch_B = Relay('B')
gauge_1 = Gauge('1')
global switch_A
global switch_B
global gauge_1
from exp_protocols import my_protocol
my_protocol()
與exp_protocols.py
看起來像這樣:
def my_protocol():
print 'Pressure is %.3f mbar.' % gauge_1.value
switch_A.close()
switch_B.open()
它輸出一個全局變量錯誤,因爲exp_protocols.my_protocol
不能訪問myscript.py
定義的對象。
看來,從這裏閱讀答案前面的問題,我可以(應該?)在另一個模塊中創建所有我Relay
和Gauge
變量,例如,myconfig.py
,然後import myconfig
無論是在myscript.py
和exp_protocols
?但是如果我這樣做,我的Relay
和Gauge
對象是不是會創建兩次(因此試圖打開已激活的串行端口等)?
什麼是實現這種模塊間通信的最佳方式(大多數是Pythonic)?
在此先感謝。
爲什麼不會將'switch_A','switch_B'和'gauge_1'作爲函數參數傳遞給'my_protocol'? – 2014-10-01 20:44:20