更改过程内的变量

2024-06-12 02:13:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Start()过程中创建了一个变量,但它似乎不记得过程外的变量。有没有办法让python在Start()过程之外记住变量?我的代码如下:

def Start():
    password = raw_input("Enter A Password With 7 Or More Characters: ")
    passwordLength = len(password)
    if passwordLength<7:
        print "Your entered a password with less than 7 characters. Enter a longer password."
        Start()
    else:
        reEnter = raw_input("Re-enter your password: ")
        if reEnter<>password:
        print "Your passwords did not match, please try again."
        Start()
        if reEnter==password:
        print "Your password has been saved."


Start()

print password
print passwordLength

Tags: 代码inputyourrawif过程defpassword
3条回答

可以在函数末尾返回变量。你知道吗

def Start():
    password = input("Enter A Password With 7 Or More Characters: ")
    passwordLength = len(password)
    if passwordLength<7:
        print("Your entered a password with less than 7 characters. Enter a longer password.")
        return Start()
    else:
        reEnter = input("Re-enter your password: ")
        if not reEnter == password:
            print("Your passwords did not match, please try again.")
            return Start()
        else:
            print("Your password has been saved.")
            return password, passwordLength

savedPass, passLength = Start()

print(savedPass)
print(passLength)

编辑:编辑风格(谢谢@jrennie)和递归调用。(感谢@bgporter)

def Start():
    global password
    global passwordLength
    ....

这里我假设password和passwordLength是全局变量。为此,您可以使用global关键字,只需在Start()开头这样定义它们:

def Start():
    global password
    global passwordLength

    password = raw_input("Enter A Password With 7 Or More Characters: ")
    passwordLength = len(password)
    if passwordLength<7:
        print "Your entered a password with less than 7 characters. Enter a longer password."
        Start()
    else:
        reEnter = raw_input("Re-enter your password: ")
        if reEnter<>password:
            print "Your passwords did not match, please try again."
            Start()
        if reEnter==password:
            print "Your password has been saved."

然而,在python中,globals常常是不受欢迎的。如果可能的话,试着使用return来打印输出,但是对于大多数情况,global就可以了。你知道吗

相关问题 更多 >