如何在Python函数内接收用户输入,解决变量未定义报错
问题原因与解决方法
你遇到的报错是Python变量作用域规则导致的:函数内部默认定义的变量是局部变量,仅在函数运行时的内部空间有效,函数执行结束后就会被回收,函数外部无法直接访问。
代码问题分析
你第一段封装函数的代码中,stuff 是在getinput()函数内部定义的局部变量,函数外部的print(stuff)语句没有权限访问这个局部变量,所以触发NameError报错。
而你第二段没有封装函数的代码里,stuff是定义在全局作用域的变量,同级的print语句可以直接访问,所以能正常运行。
正确修改方案
推荐优先使用return返回值的方式实现需求,这是最规范的写法:
def getinput(): stuff = input("Please enter something.") # 将内部的变量值返回给函数的调用位置 return stuff # 调用函数时,用变量接收返回的结果 stuff = getinput() print(stuff)
如果你确实需要在函数内部直接修改全局变量,也可以用global关键字声明,不过这种写法容易造成变量污染,新手阶段不推荐常规使用:
def getinput(): # 声明当前函数内操作的stuff是全局变量,外部可以访问 global stuff stuff = input("Please enter something.") getinput() print(stuff)
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

