如何从函数中获取返回值?

时间:2017-09-30 00:16:33

标签: python python-2.7

我正在开发一个函数来从数据库中获取信息,这样我就可以得到返回值。我试图找出如何一次从UpdateEPG函数中获取每个值。

当我尝试这个时:

def UpdateEpg(self, program_title = '', program_start = '', program_stop = ''):
    conn = database.connect(self.profilePath)
    cur = conn.cursor()
    cur.execute("SELECT title, start_date, stop_date FROM programs where channel=? LIMIT 2", [channel])
         program = cur.fetchall()

    for ind, row in enumerate(program):
        program_title = row[0]
        program_start_date = str(row[1])
        program_stop_date = str(row[2])


    return program_title, program_start_date, program_stop_date 


self.UpdateEpg()
print self.UpdateEPG(program_title)
print self.UpdateEPG(program_start_date)
print self.UpdateEPG(program_stop_date)        

它不会让我从UpdateEpg获取单个值。我想获得单个值,以便我可以在对象中输入以设置标签。您能否举例说明如何为每个变量获取program_titleprogram_start_dateprogram_stop_date以获取UpdateEpg的访问权限以获取我要查找的信息?

3 个答案:

答案 0 :(得分:1)

由于您的方法返回一个元组,您可以使用索引来获得所需的值。

my_tuple = self.UpdateEpg()
print my_tuple[0]  # Prints program_title
print my_tuple[1]  # Prints program_start_date
print my_tuple[2]  # Prints program_stop_date

当然,您可以按照自己喜欢的方式使用和打印元组。请注意,您需要在您声明的类中调用self.UpdateEpg()

答案 1 :(得分:1)

访问多个值类似于返回多个值。只需将名称放在=

的左侧
program_title, program_start_date, program_stop_date = self.UpdateEpg()
print program_title
print program_start_date
print program_stop_date

答案 2 :(得分:0)

看起来你是Python的新手。一般的编程。这在任何方面都不错;即使是我们中最好的人也必须从某个地方开始。以下是从12岁开始使用Python的人的一些提示。(好的,这只是三年左右,但仍然......)

首先,如果你能提供帮助,我强烈建议使用Python 3而不是Python 2。 Python 2已经被弃用了四年,这个程序将在Python 3上运行,几乎没有修改。

其次,在Python中,一切都是按值传递的。分配给传递给函数的变量不会改变函数外的变量值,例如:

>>> def myfunc(a):
...     a=2
...
>>> a = 1
>>> myfunc(a)
>>> print(a)
1
>>>

(请注意,在交互式提示符下,大多数对print()的调用都是不必要的。只需输入变量名称(或1+1someFunction()等表达式)它的价值。)

此规则的例外是某些对象(例如列表)是可变的。它们的内容(但不是列表本身)可以在函数内部进行更改:

>>> def myfunc2(l):
...     l[0] = 2
... 
>>> mylist = [1, 2, 3]
>>> myfunc2(mylist)
>>> mylist
[2, 2, 3]
>>>

请注意,myfunc函数没有更改列表本身,它只更改了列表中的值。

字符串不属于此类别。在Python中,字符串是不可变的。一旦设置了内容,就无法更改。更改字符串值的唯一方法是为变量赋值,使其忘记旧值。

第三,在Python中,函数可以返回多个值作为元组,它就像一个列表,但它使用括号(可选,可以省略)而不是方括号,并且不能更改其内容(从中调用myfunc2)上面的元组会导致错误)。另一个方便的功能是元组解包(它也适用于列表和任何其他类型的序列),如下所示:

>>> mytuple = (1, 2, 3)
>>> mytuple
(1, 2, 3)
>>> a, b, c = mytuple
>>> a
1
>>> b
2
>>> c
3
>>>

以下版本UpdateEpg()考虑了这些因素:

def UpdateEpg(self):
    conn = database.connect(self.profilePath)
    cur = conn.cursor()
    cur.execute("SELECT title, start_date, stop_date FROM programs where channel=? LIMIT 2", [channel])
    row = cur.fetchone()

    program_title = row[0]
    program_start_date = str(row[1])
    program_stop_date = str(row[2])


    return program_title, program_start_date, program_stop_date 


program_title, program_start, program_finish = self.UpdateEpg()   

对于文本墙感到抱歉,但我想确保人们在将代码复制粘贴到StackOverflow之前了解他们的程序正在做什么。