为什么不更新变量?功能问题

时间:2020-07-22 09:47:38

标签: python-3.x function

第一次尝试使用功能!但是我对变量有问题。为什么不更新?

def errorcheck(var):
        while (var != "y" and var != "n"):
                var = input("\nError. Input Y or n only. Enter again:\n-> ").lower() #gives user a choice on what directory
        return var

def getdirectory():
    print("\nCurrent directory is: " + os.getcwd()) #print current directory
    choice2 = input("\nRename files in current directory? Y or n:\n-> ").lower() #gives user a choice on what directory
    errorcheck(choice2)
    print("Choice 2 is now:" + choice2)

我希望选项2的值在错误检查后会改变,但选项2仍与错误检查前输入的值相同。

Rename files in current directory? Y or n:
-> hello

Error. Input Y or n only. Enter again:
-> n
Choice 2 is now: hello

这是怎么了?

1 个答案:

答案 0 :(得分:1)

当错误检查功能返回一个值时,您没有使用它。 将第二个功能更改为:

def getdirectory():
    print("Choice 2 is now:" + errorcheck(choice2))
    choice2 = input("\nRename files in current directory? Y or n:\n-> ").lower()
    choice2 = errorcheck(choice2) #Update choice2
    print("Choice 2 is now:" + choice2)

函数无法更改其外部变量的值。在某些其他语言中,您可以使用 pointers 进行此操作,但是Python无法使用它们。为此,您必须返回值,然后使用返回值更新变量。