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

2024-10-04 03:22:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个函数,从数据库中获取信息,以便获取返回值。我试图找出如何一次从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以获得我要查找的信息吗?你知道吗


Tags: 函数selfdatetitlechannelconnprogramstart
3条回答

因为方法返回元组,所以可以使用索引来获取所需的值。你知道吗

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()。你知道吗

访问多个值类似于返回多个值。把名字放在=的左边

program_title, program_start_date, program_stop_date = self.UpdateEpg()
print program_title
print program_start_date
print program_stop_date

看起来你对Python还不熟悉。以及一般的编程。这一点都不坏,即使是最优秀的人也必须从某个地方开始。以下是一些从12岁起就开始使用Python的人的建议。(好吧,才三年左右,但还是……)

首先,我强烈建议您使用Python3而不是Python2,如果您能帮助的话。Python2已经被弃用了四年,这个程序将在Python3上运行,几乎没有修改。你知道吗

其次,在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复制粘贴代码之前理解他们的程序在做什么。你知道吗

相关问题 更多 >