1 变量作用域
变量(所有在内存中的数据)作用域:LEGB
L:Local 本地作用域(局部作用域),函数内部
E:Enclosed 闭包作用于,两个函数之间的,
G:Gobal全局作用域(这个文件)
B:Builtln 内置作用域(全局通用)(pprint(builtins))
内置:在任何地方,都可以直接使用
全局:在本文件的任何地方,可以直接使用
访问顺序:当我们访问某个变量时,会按照L->E->G->B的顺序去
2 变量升级
如何让变量升级
2.1.gloabl关键字和nonlocal关键字
gloabl关键字 让变量升级到全局作用域
nonlocal关键字 闭包作用域
def f1(): #name="f1" global f2 def f2(): #nonlocal name #name="f2" print(name) f1() f2()
可以让同名但是不同值的变量,同时存在
怎么创造新的作用域:
B G是不需要创造
L E通过定义函数来创造
判断、循环、类:都不能创造作用域
2.2 模块导入
文件:模块
文件夹:包
解决变量(数据)跨文件访问:模块导入
模块导入
from a import name(name是a.py文件的全局变量)#覆盖本文件的全局作用域 print(name) import a print(a.name)
什么样的python文件都可以被导入吗?
- 文件名符合变量名要求的.py结尾的python文件
- 文件存在于sys.path路径内
import sys sys.path.append("D:\lgs\paramter")#包加入到系统路径 for p in sys.path: print(p)
什么样的python文件夹可以被导入?
- 文件名夹符合变量名要求的
- 文件夹存在sys.path路径内容
- 文件夹包含了模块(普通模块,特殊模块:__init__.py)