在Python模块之间传递变量

时间:2014-06-26 11:23:45

标签: python function variables python-2.7

例如,我有一个名为“gui.py”的文件,它使用一个名为“pytime.py”的模块。 它们位于同一目录中。

模块(time.py)代码有两个函数:settime()和readtime()

gui.py代码如下:

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

现在,我希望pytime模块中的其他函数(readtime())可以访问小时。 我试过“全球”,但它没有帮助,也搜索了很多。

谢谢!

2 个答案:

答案 0 :(得分: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定义了一个属性getter但没有setter,hour是不可变的(尽管确定的用户可以直接访问_hour)。

答案 1 :(得分: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$