运行Python代码出现‘name 'one' is not defined’错误的根源及原因
错误根源与修正方案
核心问题:变量作用域混乱
你遇到的name 'one' is not defined错误,根源是变量的作用域不匹配,具体有三个关键点:
- 最后一行调用
Two(one)时,这里的one是全局作用域的变量,但你从未在全局定义过它,直接使用就会报错。 - 函数
One()内部的one是局部变量,只在One()函数执行期间有效,出了这个函数就会被销毁,外部(包括Two())根本访问不到它。 Two()的参数one是该函数的局部变量,和One()里的one、全局的one完全是三个独立的变量,就算你在Two()里调用了One(),也不会给这个参数赋值。
修正代码示例
要实现你想要的逻辑(让Two()打印One()输入的内容),最简单的方式是让One()返回输入的值,然后在调用Two()时传递这个返回值:
def One(): # 让函数返回输入的内容 return input("Type something: ") def Two(one): print(one) # 先调用One()获取返回值,再传给Two() user_input = One() Two(user_input)
或者如果一定要在Two()内部调用One(),可以直接接收返回值:
def One(): return input("Type something: ") def Two(): # 直接接收One()的返回值并打印 one = One() print(one) Two()
内容的提问来源于stack exchange,提问作者Cloze Line
相关产品推荐
相关产品推荐

