Skip to main content
 首页 » 编程设计

Python:如何创建 "global object"

2025年05月04日11kerrycode

我对以下代码有疑问。如您所见,我在函数 setup_session() 中设置了一个 sqlite3 数据库,尽管当我尝试运行它时它会抛出异常,因为我创建的对象 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)") 

我怎样才能改变它,使光标也可以从函数外部使用?

请您参考如下方法:

从字面上回答您的问题:在函数顶部添加 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:让函数返回它的结果,而不是将它存储到一个全局变量中,然后将该结果分配给你想要的任何变量您调用该函数。

这种风格通常允许更好的测试、更好的维护、更少的麻烦、更大的灵 active (如果明天你想要 两个 游标在 cursor1 和 cursor2,仅举个例子?全局变量需要维护,使用返回结果的更好方法是微不足道的...)。