1 import导入
import导入模块
from…import从一个模块中导入某一成员
python中一切皆为对象,导入的模块也是生成一个对象
import math
print(id(math))
print(type(math))
1699116140408
<class 'module'>
from math import *#*代表导入全部内容
print(sin(3))#不需要写为math.sin(3)
import mypy01
2.动态导入
使用import的时候其实是调用__import__函数,可以用这种方法实现动态导入.
s='math'
m=__import__(s)
print(m.sin(3))
但是不推荐使用这种方法,实现动态导入一般用importlib模块实现
import importlib
s='math'
m=importlib.import_module(s)
print(m.sin(3))
结果如下:
0.1411200080598672
另外,加载同一模块两次,只会加载一次,如果需要加载多次,需要用
importlib.reload()进行重新加载.
3.包package的使用
包中存放许多的模块,并且必须有__init__.py文件,包类似于一个文件夹,但必须有__init__.py文件.
包下一层也放一些小的包.导入包其实导入的是__init__文件.
from a.aa import Modile_aa
Modile_aa.a()#执行的是a包的子包aa中Modiile_aa模块中的a()函数
结果如下:
执行a函数
此时如果a包的__init__函数中要求打印,则结果变为
导入a包
执行a函数
并且a包的__init__函数还可以实现批量导入.
4.__init__函数的作用
(1)作为包的标识
(2)进行模糊导入(模糊导入就是from a import ,在a包的__init__函数中可以规定具体代表哪些模块)
(3)由于导入包的实质是执行__init__函数,所以可以批量导入,以及进行初始化
5.包内引用
from ..a.aa.Modile_aa import a
from . import BBB
…表示上级目录,.表示同级目录,这里注意用import的导入会有问题,使用from import就不会.
6.在建文件的时候,如果要建名字为.py的文件,直接重命名为.py是不行的,需要输入.py.,才能建造一个文件名为.py的文件.