为何在Google Colab的Jupyter Notebook中可提前调用函数而不报错?
Colab里提前调用函数不报错的原因
核心在于Colab用的Jupyter内核是持续运行的,和普通Python IDE的一次性执行逻辑完全不同:
你应该是之前在同一个Colab会话里运行过这个函数的定义代码,函数会保存在内核的内存里。哪怕之后你在新单元格里先写
func()调用、再写函数定义,执行调用的时候,内存里已经有这个函数了,所以不会报错,后面的def func()只是重新给这个函数赋值而已。但普通Python IDE每次运行都会重启全新的解释器,整个脚本从头执行:当运行到
func()时,函数还没被定义,自然会触发NameError。
要验证的话,你可以重启Colab的内核(点顶部菜单栏「Runtime」→「Restart runtime」),然后直接运行那个先调用后定义的单元格,这时候就会和普通IDE一样报错了。
内容的提问来源于stack exchange,提问作者gobtomaru
相关产品推荐
相关产品推荐

