Python中能否在def函数内使用input函数?为何以下代码报错?
问题解答:Python函数内使用input及代码报错原因
能不能在def函数内部用input?
完全可以。input()是Python的内置函数,没有限制只能在全局作用域调用,在函数内部使用它获取用户输入是完全合法的操作。
代码报错的原因
你的代码报错name and location not defined,问题出在函数调用的那一行:
print(function(namel=name,locationl=location))
这里的name和location是你在函数内部定义的局部变量,仅在函数执行时的局部作用域内有效,全局作用域中根本不存在这两个变量,所以Python在调用函数时找不到它们,就会抛出未定义的错误。
另外你定义的函数参数namel和locationl完全没有被使用,函数内部直接用input()重新获取了值,这两个参数属于冗余定义,没有实际作用。
修正后的代码示例
方式1:去掉冗余参数,直接在函数内获取输入
def function(): name = input("Your name: ") location = input("Location: ") return name + location print(function())
调用时无需传参,函数会自动获取用户输入并返回拼接结果。
方式2:保留参数(支持外部传值或内部输入)
如果想让函数既可以接收外部传入的参数,也能在无参调用时自动获取输入,可以改成这样:
def function(namel=None, locationl=None): # 有传参则用传入的值,无参则让用户输入 name = namel if namel is not None else input("Your name: ") location = locationl if locationl is not None else input("Location: ") return name + location # 两种调用方式均有效 print(function()) # 执行时会提示用户输入 print(function(namel="Ankit", locationl="Delhi")) # 使用传入的参数值
内容的提问来源于stack exchange,提问作者Ankit Hatria
相关产品推荐
相关产品推荐

