import语句
什么是模块?
一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀,但其实import加载的模块分为四个通用类别。
1.使用python编写的代码(.py文件)
2.已被编译为共享库或DLL的C或C++拓展
3.包好一组模块的包
4.使用C编写并链接到python解释器的内置模块
包:
包含init.py的文件夹,包和模块是被导入使用的
导入模块干了哪些事?
1.执行源文件
2.以源文件为基础产生一个全局名称空间
3.在当前位置拿到一个模块名指向2创建的名称空间
1 sql_type = input('sql_type') 2 if sql_type == 'mysql': 3 import mysql as sql 4 elif sql_type == 'oracle': 5 import oracle as sql
可以用as更改源文件的文件名,方便使用。
from....import语句
和imprt导入模块的三种功能相同
优点:使用源文件内的名字时无需加前缀,使用方便
缺点:容易与当前文件的名称空间内的名字混淆
from spam import *
表示的是到如spam文件中的所有名称空间
如果在源文件内的名称空间前边加上一个横杆,此时from spam import * 表示的除了加横杠外所有的名称空间。
__all__=['money','x']表示读的只有__all__中的名称空间
import spam
import spam
有多个import时只执行一遍,表示已经读入到了内存中,之后引用已经存在的。
import sys
print(sys.modules)
查看内存中已经存在的模块,此时打印字典,存放的是已经加载到内存中的模块。
模块的搜索路径
import timr
timr.sleep(10)
import time
print(spam.money)
此时修改的是当前py文件中的内容。
python文件:修改完文件之后需要重新加载。
import importlib
importlib.reload()#可以重新加载(用不到生产环境,只能在测试环境中使用),但是只能重新加载当前使用的文件。
import sys
print('time' in sys.modules)
import time
print('time' in sys.modules)
在内置中的必须重新加载才能使用。
内置的加载到内存中,下次到内存中调用。
内存--->内置--->硬盘
注意:自定义的模块名一定不要与python中自带的模块名重名。
import sys
print(sys.path)#表示的是执行文件的当前路径
内存中--->内置模块--->sys.path
当前路径没有,加到环境变量中。
import sys
sys.path.append(filepath)