Python3函数返回值

时间:2017-04-04 16:15:17

标签: python-3.x

我相信我的功能有些不正确,但我对python和功能一般都很陌生,我不知道我的问题是什么。在下面的代码中,我没有向函数发送任何值,但是一旦函数读取数据库,我希望它将数据库中的值拉回到主程序中。我在函数内部放置了一个print语句,以确保它从数据库中提取值,一切正常。我在主区域的函数调用之后立即复制并粘贴了相同的打印行,但我得到了NameError: 'wins' is not defined。这让我相信我没有正确地返回值?

#Python3
import pymysql

def read_db():
    db = pymysql.connect(host='**********',user='**********',password='**********',db='**********')
    cursor = db.cursor()
    sql = "SELECT * FROM loot WHERE id = 1"
    cursor.execute(sql)
    results = cursor.fetchall()
    for row in results:
        wins = row[2]
        skips = row[3]
        lumber1 = row[4]
        ore1 = row[5]
        mercury1 = row[6]
    db.commit()
    db.close()
    print ("Wins = ",wins," Skips = ",skips," Lumber = ",lumber1," Ore = ",ore1," Mercury = ",mercury1)
    return (wins, skips, lumber1, ore1, mercury1)

read_db()
print ("Wins = ",wins," Skips = ",skips," Lumber = ",lumber1," Ore = ",ore1," Mercury = ",mercury1)

1 个答案:

答案 0 :(得分:2)

仅执行read_db()会导致返回值被抛出。您需要将返回值分配给变量:

wins, skips, lumber, ore = read_db()

您返回名为wins的变量的事实并不意味着wins变量将在您调用read_db()的范围内变为可用。您需要明确指定返回值。