【问题标题】:Call function in if statement - Python3 [duplicate]if语句中的调用函数-Python3 [重复]
【发布时间】:2020-09-04 01:14:00
【问题描述】:

所以我正在尝试使用 Python3 在终端中编写登录对话框,但由于某种原因,此代码:

def start():

    login_signin_Confirmation = input("Welcome! Do you wish to log-in to your account or sign up to this platform? \n")

    if login_signin_Confirmation == "login":
        
        login()
    else:
        signup()       
start()

def login():

    login_username = input("Great! start by typing in your username.")

    if login_username in users:
        print("Welcome Back, {login_username}")
login()

提示我此错误消息:

Welcome! Do you wish to log-in to your account or sign up to this platform? 
login
Traceback (most recent call last):
  File "login.py", line 22, in <module>
    start()
  File "login.py", line 19, in start
    login()
NameError: name 'login' is not defined

刚开始有些我不确定我做错了什么,我找不到有同样问题的人......

【问题讨论】:

  • 您无法运行尚未定义的函数。在定义login 之前调用start(),然后start 尝试调用login()
  • Python是解释型语言,不是编译器,只能使用在使用前定义好的函数
  • 为什么投反对票?问题非常有效。它可能是重复的,但人们无法知道网站中提出的每个问题。
  • @Asocia Downvote 因为“这个问题没有显示任何研究工作”,并且在 Google 或 SO 上搜索会返回很多相关结果。
  • 另外,不要忘记在 print 语句中使用正确的 f 字符串语法(字符串前面的 'f')。 (或使用.format( ... )

标签: python python-3.x


【解决方案1】:

正如其他人指出的那样,您需要先定义,然后调用函数:

# imports first

# now definitions of functions

def start():
    login_signin_Confirmation = input("Welcome! Do you wish to log-in to your account or sign up to this platform? \n")
    if login_signin_Confirmation == "login":
        login()
    else:
        signup()       

def signup():
    pass

def login():
    login_username = input("Great! start by typing in your username.")
    if login_username in users:
        print("Welcome Back, {login_username}")


# main 
def main():
    start()

# guard multiprocess context
if __name__ == '__main__':
    main()

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2023-01-23
    • 2023-04-03
    相关资源
    最近更新 更多