2014-06-26 92 views
-2

例如,我有一個名爲「gui.py」的文件,它使用一個稱爲「pytime.py」的模塊。 他們在同一個目錄中。Python模塊之間的傳輸變量

模塊(time.py)代碼有兩個功能:時刻設定()和readtime()

gui.py代碼如下所示:

import pytime 
pytime.settime(16,40) #set hour to 16:40 

現在,我想,其他功能pytime模塊(readtime())可以訪問小時。 我嘗試過「全球」,但它沒有幫助,也GOOGLE了很多。

謝謝!

+1

什麼? pytime.settime實際上做了什麼?它有什麼變化? – jonrsharpe

+0

它增加了時間變量,包括時間。 readtime()應該讀取這個變量 – user3611091

+0

你是什麼意思*「添加變量」*?你能否展示一個[最小示例](http://stackoverflow.com/help/mcve)而不是描述它? – jonrsharpe

回答

0

你可以在可變進的功能,例如:

pytime.py

def settime(hour, minute): 
     return str(hour)+':'+str(minute) 

def readtime(hour): 
     print 'This is the hour: {0}'.format(hour) 

gui.py

import pytime 
hour = pytime.settime(16, 40) 
pytime.readtime(hour) 

這種形式運行:

bash-3.2$ python gui.py 
This is the hour: 16:40 
bash-3.2$ 
+0

Thankes爲你的答案!但是,問題是我在程序中調用了readtime()很多次,並且每次我調用它時都會設置'hour'變量。 readtime()將自動讀取它。不管怎樣,謝謝! – user3611091

1

如果你想在功能之間共享的狀態,要做到這一點的最好辦法很可能是一類:

# pytime.py 
class PyTime(object): 

    def __init__(self, hour=0, minute=0): 
     self._hour = hour 
     self._minute = minute 

    def set_time(self, hour=None, minute=None): 
     if hour is not None: 
      self._hour = hour 
     if minute is not None: 
      self._minute = minute 

    def read_time(self): 
     return self._hour, self._minute 

    def __str__(self): 
     return "{0._hour:02d}:{0._minute:02d}".format(self) 

    @property 
    def hour(self): 
     return self._hour 

    @property 
    def minute(self): 
     return self._minute 

在使用中:

>>> timer = PyTime() 
>>> timer.set_time(16, 40) 
>>> timer.read_time() 
(16, 40) 
>>> timer.hour 
16 
>>> str(timer) 
'16.40' 
>>> timer.set_time(minute=30) 
>>> str(timer) 
'16:30' 
>>> timer.hour = 15 

Traceback (most recent call last): 
    File "<pyshell#25>", line 1, in <module> 
    timer.hour = 15 
AttributeError: can't set attribute 

注意這最後的結果 - 因爲我爲hour定義了屬性獲取器,但沒有設置器,因此hour是不可變的(儘管確定的用戶可以直接訪問_hour)。

+0

我也會提出這種方法。總是嘗試使用類來解決這類問題。 – sayan

+0

我現在正在嘗試它。 – user3611091