作者:彭伟波2013 | 来源:互联网 | 2023-05-24 10:57
我有以下代码的问题.正如您所看到的,我在函数中设置了一个sqlite3数据库setup_session()
,但是当我尝试运行它时会抛出异常,因为cursor
我创建的对象setup_session()
只能在函数内部使用.
import sqlite3
def setup_session():
db = sqlite3.connect("data.db")
cursor = db.cursor()
setup_session()
cursor.execute("CREATE TABLE subjects (subject text)")
如何更改它以便光标也可以从函数外部获得?
1> Alex Martell..:
要按字面意思回答你的问题:global cursor
在函数的顶部添加:
def setup_session():
global cursor
db = sqlite3.connect("data.db")
cursor = db.cursor()
然而global
,不是很好的编程实践,你几乎总是可以使用更好的风格.在这里,我建议:
def setup_session():
db = sqlite3.connect("data.db")
return db.cursor()
cursor = setup_session()
也就是说,避免global
:将函数return
作为结果,而不是将其存储到全局变量中,并将该结果分配给调用函数时所需的任何变量.
这种风格通常允许更好的测试,更好的维护,更少的麻烦,更多的灵活性(如果明天你想要两个游标,cursor1
并且cursor2
,例如?全局变量需要维护,通过更好的方法return
获得结果......).