Scope,也就是作用域,是指变量被创建和查询的地方,可以简单理解为变量的生存空间。当在Python创建一个变量并赋值时,该变量就会被分配至相应的作用域。
记住两句话:
1、在Python中,在使用变量之前,必须先对变量赋值。
2、在什么位置给一个变量赋值决定了这个变量的属于什么作用域,即变量在什么范围内可见
Python中的变量赋值规则:
1、声明一个变量并赋值,默认这个变量为local,如果不想声明为local,需要加关键字global或者nonlocal
2、global scope是指一个完整的module/file的范围,local scope是指当前最小的范围(比如for代码块),nonlocal scope是指中间层级的范围。
3、每调用一次函数,就会创建一个新的函数作用域
Python中变量搜索规则从内往外依次是:local->enclosing function->global->built-in
简单总结为下图:
代码示例如下:
总结:变量在哪赋值,它就在哪个范围内可见。