Python 我的函数不断返回变量的旧版本,即使我只需要最新版本

Python 我的函数不断返回变量的旧版本,即使我只需要最新版本,python,recursion,Python,Recursion,我有一个函数,要求用户输入一些信息,并对输入进行一些检查。如果输入不符合多个条件,它将再次运行该函数,并再次要求用户输入一些内容 但是,当我返回该函数时,它既返回最新的输入,也返回不正确的输入。我做错了什么?一些print语句纯粹用于调试 def get_email(email): print('starting email is',email) while email == 'empty': print('the email we use now is',ema

我有一个函数,要求用户输入一些信息,并对输入进行一些检查。如果输入不符合多个条件,它将再次运行该函数,并再次要求用户输入一些内容

但是,当我返回该函数时,它既返回最新的输入,也返回不正确的输入。我做错了什么?一些print语句纯粹用于调试

def get_email(email):
    print('starting email is',email)
    while email == 'empty':
        print('the email we use now is',email)
        email = input()
        print("your input email is",email)
    if '@' not in email:
        get_email('empty')
    elif email[-1] == '@':
        get_email('empty')
    elif email[0] == '@':
        get_email('empty')
    print("the email we return is",email)
    return email
get_email('empty')

您在两个方面误用了递归:首先,您没有使用递归调用的返回值:

def get_email(email):
    print('starting email is',email)
    while email == 'empty':
        print('the email we use now is',email)
        email = input()
        print("your input email is",email)
    if '@' not in email:
        email = get_email('empty')
    elif email[-1] == '@':
        email = get_email('empty')
    elif email[0] == '@':
        email = get_email('empty')
    print("the email we return is",email)
    return email

print(get_email('empty'))
要么使用输入获取电子邮件,要么将其用作函数的参数,而不是两者都使用
def get_email(email):
    print('starting email is', email)
    # @ isn't in 'empty', so no need to check for empty specifically
    while '@' not in email or email[-1] == '@' or email[0] == '@':
        print('the email we use now is ', email)
        email = input()
        print('your input email is ', email)
    print('the email we return is ', email)
    return email