AI智能
改变未来

Python变量的作用域在编译过程中确定

为了节省读友的时间,先上结论(对于过程和细节感兴趣的读友可以继续往下阅读,一探究竟):

【结论】

    1)Python并不是传统意义上的逐行解释型的脚本语言

    2)Python变量的作用域在编译过程就已经确定,而不是在一行行运行的过程中

【实例】

近几天遇到一个比较典型的错误,详解如下(图例中均为简化后的代码):

1)嵌套函数的内部函数引用了外部函数的局部变量,正确无误不报错

  

2)之后,在内部函数的第8行错误地加了一行赋值语句,结果报错第5行有问题

  

3)如果Python是真正意义上的逐行运行,应该是运行到第8行给外部函数赋值时才会报错。说明Python并不是严格意义上的逐行解释型语言

4)翻阅资料后得知:因为编译过程中已经确定了变量a为内部函数的局部变量,于是执行到第5行的时候发现局部变量a还未赋值,于是报错“UnboundLocalError: local variable \’a\’ referenced before assignment”

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Python变量的作用域在编译过程中确定