如图,比如,内置名称max在模块顶层赋值,按LEGB原则,max应该是全局变量,那么第3行的输出应该会报错。
同理,在函数中赋值,会变成局部作用域变量,会报错,而不是输出
为什么会报错呢?内置的访问可以直接访问。内置字段始终也是一个符号。Python是完全面向对象。
max是函数不是变量。和全局不全局无关。
.
第一张图中:max是内置名称,您看,三个个print(max)只输出了1个100,说明:第一个print(max)中,max尚未定义,所以此时的max代表python内置函数max(a,b)
所以第一个print(max)并未给max(a,b)中的a,b赋值,只有 built-in function max 的作用;第二个已赋值max=100,所以忽略max(a,b)输出100;第三个是builtin下的函数,起同1的效果
第二张因在函数内,内置max函数被屏蔽,所以报错;报错中断了程序;如果不报错,还会输出200