Python中如何实现函数跳转?调用未定义函数报错解决
Python函数调用报错:NameError: name 'number2' is not defined的解决方法
问题场景
你编写了以下Python代码,希望从number1函数跳转到number2函数执行:
def number1(): print("from here to ") number2() number1() def blablabla(): print("blablabla") blablabla() def number2(): print("here") number2()
报错信息
运行后出现如下错误:
Traceback (most recent call last): File "C:\Users\i5 9400f\Documents\projetos python\test.py", line 4, in <module> number1() File "C:\Users\i5 9400f\Documents\projetos python\test.py", line 3, in number1 number2() ^^^^^^^ NameError: name 'number2' is not defined. Did you mean: 'number1'? from here to Process finished with exit code 1
原因分析
Python是解释型语言,代码从上到下逐行执行。当执行到number1()调用时,number2函数的定义还在代码后半部分,解释器此时未读取到number2的定义,因此找不到该函数,抛出NameError。
解决方法
方法1:调整函数定义顺序,将number2放在number1之前
确保解释器执行number1()前,已经加载number2的定义:
def number2(): print("here") def number1(): print("from here to ") number2() number1() def blablabla(): print("blablabla") blablabla() number2()
方法2:先声明number2占位,后续补充实现
如果不想调整整体代码结构,可先给number2一个空定义,之后再完善函数体:
# 先声明函数占位 def number2(): pass def number1(): print("from here to ") number2() number1() def blablabla(): print("blablabla") blablabla() # 补充number2的实现 def number2(): print("here") number2()
方法3:将所有函数调用放在定义之后
这是最规范的写法,先定义所有函数,再执行调用逻辑,彻底避免执行顺序问题:
def number1(): print("from here to ") number2() def blablabla(): print("blablabla") def number2(): print("here") # 所有调用操作放在最后 number1() blablabla() number2()
内容的提问来源于stack exchange,提问作者Beldro
相关产品推荐
相关产品推荐

