你如何在Python中调用存储在变量中的函数,mh

时间:2017-04-30 13:30:25

标签: python function variables login

下面您可以看到,当我尝试调用存储在变量中的mainLogin()函数时,它表示尚未定义。

我知道有办法,但似乎无法弄明白。

validUser = {}
answer = ""

answer = mainLogin()

def mainLogin():
    while True:
        print("Are you currently a registered user [y/n]: ")
        answer = input().lower()
        if answer in "y n".split():
            return answer
        else:
            print("Error: please enter [y/n].")

def Login(answer):
    if answer == "y":
        while True:
            askUsername = input("ENTER USERNAME: ")
            askPassword = input("ENTER PASSWORD: ")
            if len(askUsername) > 0 and askUsername.isalpha():
                if askUsername in validUser and valid[askUsername] == askPassword:
                    print("\nLogin Success!\n")
                    break
                else:
                    print("Error: Incorrect username or password!")
            else:
                print("Error: Don't be silly!")
    elif answer == "n":
        while True:
            createUsername = input("ENTER NEW USERNAME: ")
            if len(createUsername) > 0 and createUsername.isalpha():
                if createrUsername in validUser:
                    print("Meesage: username already exists.")
                else:
                    createPassword = input("ENTER NEW PASSWORD: ")
                    if len(createPassword) > 0 and createPasssword.isalpha():
                        validUser[createUsername] == createPassword
                        print("\nUSER CREATED\n")
                    else:
                        print("Error: Please choose a different password.")
            else:
                print("Error: Don't be silly!")
    else:
        print("Error: You have not entered [y/n]")

2 个答案:

答案 0 :(得分:1)

answer = mainLogin()放在文件的底部。

以下函数尚未由python注册。 Python将逐行思考您的脚本/模块。当您在模块的根目录中有代码时,它将被执行。

要解决此问题,您还可以执行以下操作:

def main():
    answer = mainLogin()

def mainLogin():
    # code

if __name__ = "__main__":
    main()

在我们开始做任何工作之前,python将从上到下检查整个文件。这是解决问题的标准方法。

__name__是模块的名称。如果我们使用python命令专门启动模块,将为其分配名称__main__python script.py。如果我们从另一个脚本导入模块,__name__将包含模块的实际名称,因此不会调用main()

答案 1 :(得分:0)

您不能将未定义的函数分配给变量,首先定义函数,然后将其分配给变量。像这样:

def mainLogin():
    while True:
        print("Are you currently a registered user [y/n]: ")
        answer = input().lower()
        if answer in "y n".split():
            return answer
        else:
            print("Error: please enter [y/n].")

answer = mainLogin()