我正在开发一个函数来从数据库中获取信息,这样我就可以得到返回值。我试图找出如何一次从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_title
,program_start_date
和program_stop_date
以获取UpdateEpg
的访问权限以获取我要查找的信息?
答案 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+1
或someFunction()
等表达式)它的价值。)
此规则的例外是某些对象(例如列表)是可变的。它们的内容(但不是列表本身)可以在函数内部进行更改:
>>> 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之前了解他们的程序正在做什么。