为什么我收到一个错误,指出 k 未定义,即使我已经返回它?

Why am I getting an error stated that k is not defined, even though i have returned it?

为什么我收到错误提示 k 未定义,即使我已返回它?

import pyautogui
def askpass():
    password = pyautogui.password(text='Enter password for the database:', title='', default='', mask='*')
    if password=='root':
        print('password correct')
    else:
        askpass()
    k=password
    return k

askpass()
print(k)

编辑: 我在阅读代码时错过了递归 askpass(),如果您输入了错误的密码,您将进入同一函数的另一个调用,但该调用的 return 不会分配给密码。现在我不建议在这里使用递归,因为你只是继续添加函数调用,但我建议用这样的 while 循环来做到这一点:

def askpass():
    password = ""
    while password != "root":
        password = pyautogui.password(text='Enter password for the database:', title='', default='', mask='*')
    k=password
    return k

旧:

正确的语法是

import pyautogui
def askpass():
    password = pyautogui.password(text='Enter password for the database:', title='', default='', mask='*')
    if password=='root':
        print('password correct')
    else:
        password=askpass()
    k=password
    return k

k = askpass()
print(k)

print(askpass())

当你return一个变量时,它return就是你可以像上面写的那样得到的值。

(这就是您的想象方式,但在 python 中实际发生的是函数 return 对对象的引用,然后可以将其分配给变量)