<p>看起来你对Python还不熟悉。以及一般的编程。这一点都不坏,即使是最优秀的人也必须从某个地方开始。以下是一些从12岁起就开始使用Python的人的建议。(好吧,才三年左右,但还是……)</p>
<p>首先,我强烈建议您使用Python3而不是Python2,如果您能帮助的话。Python2已经被弃用了四年,这个程序将在Python3上运行,几乎没有修改。你知道吗</p>
<p>其次,在Python中,一切都是按值传递的。为传递到函数中的变量赋值不会改变该变量在函数外的值,例如:</p>
<pre><code>>>> def myfunc(a):
... a=2
...
>>> a = 1
>>> myfunc(a)
>>> print(a)
1
>>>
</code></pre>
<p>(注意,在交互式提示符下,大多数对<code>print()</code>的调用都是不必要的。只需输入变量名(或<code>1+1</code>或<code>someFunction()</code>等表达式)即可打印其值。)</p>
<p>此规则的例外是某些对象(如列表)是可变的。它们的内容(而不是列表本身)可以从函数内部更改:</p>
<pre><code>>>> def myfunc2(l):
... l[0] = 2
...
>>> mylist = [1, 2, 3]
>>> myfunc2(mylist)
>>> mylist
[2, 2, 3]
>>>
</code></pre>
<p>请注意,myfunc函数没有更改列表本身,它只更改了列表中的一个值。你知道吗</p>
<p><strong>字符串不属于这一类。</strong>在Python中,字符串是不可变的。一旦设置了它们的内容,就不能更改它们。更改字符串值的唯一方法是为变量指定一个新值,使其忘记旧值。你知道吗</p>
<p>第三,在Python中,函数可以以元组的形式返回多个值,这类似于一个列表,但它使用括号(可选,可以省略)而不是方括号,并且其内容不能更改(从上面对元组调用myfunc2会导致错误)。另一个方便的特性是元组解包(也适用于列表和任何其他类型的序列),如下所示:</p>
<pre><code>>>> mytuple = (1, 2, 3)
>>> mytuple
(1, 2, 3)
>>> a, b, c = mytuple
>>> a
1
>>> b
2
>>> c
3
>>>
</code></pre>
<p>以下是<code>UpdateEpg()</code>的一个版本,它考虑了以下几点:</p>
<pre><code>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()
</code></pre>
<p>很抱歉出现了文本墙,但是我想确保人们在从StackOverflow复制粘贴代码之前理解他们的程序在做什么。你知道吗</p>