赞
踩
模块化设计的好处之一就是“代码复用性高”。写好的模块可以被反复调用,重复使用。模块的导入就是“在本模块中使用其他模块”。
import
语句的基本语法格式如下:
import 模块名 #导入一个模块
import 模块1,模块2… #导入多个模块
import 模块名 as 模块别名 #导入模块并使用新名字
import
加载的模块分为四种类型:
使用python编写的代码.py文件
已被编译为共享库或DLL
的C或C++扩展
一组模块的包
使用C编写并链接到python解释器的内置模块
我们一般通过import
语句实现模块的导入和使用,import
本质上是使用了内置函数__import__()
。
当我们通过import
导入一个模块时,python解释器进行执行,最终会生成一个对象,这个对象就代表了被加载的模块。
import math
print(id(math))
print(type(math))
print(math.pi) #通过math.成员名来访问模块中的成员
执行结果是:
31840800
<class 'module'>
由上,我们可以看到math
模块被加载后,实际会生成一个module
类的对象,该对象被math变量引用。我们可以通过math
变量引用模块中所有的内容。
我们通过import
导入多个模块,本质上也是生成多个module
类的对象而已。
有时候,我们也需要给模块起个别名,本质上,这个别名仅仅是新创建一个变量引用加载的模块对象而已。
import math as m
#import math
#m = math
print(m.sqrt(4)) #开方运算
Python中可以使用from…import
导入模块中的成员。基本语法格式如下:
from 模块名 import 成员1,成员2,…
如果希望导入一个模块中的所有成员,则可以采用如下方式:
from 模块名 import *
⚠️尽量避免
from 模块名 import *
这种写法。*
它表示导入模块中所有的不是以下划线_
开头的名字都导入到当前位置。 但你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差。一般生产环境中尽量避免使用,学习时没有关系。
【示例】使用from…import导入模块指定的成员
from math import pi,sin
print(sin(pi/2)) #输出1.0
import
导入的是模块。from...import
导入的是模块中的函数/类。
❤️如果进行类比的话,
import
导入的是“文件”,我们要使用该“文件”下的内容,必须前面加“文件名称”。from...import
导入的是文件下的“内容”,我们直接使用这些“内容”即可,前面再也不需要加“文件名称”了。
我们自定义一个模块calculator.py
:
"""一个实现四则运算的计算器"""
def add(a,b):
return a+b
def minus(a,b):
return a-b
class MyNum():
def print123(self):
print(123)
我们在另一个模块test.py
测试:
import calculator
a = calculator.add(30,40)
# add(100,200) #不加模块名无法识别
print(a)
from calculator import *
a = add(100,200) #无需模块名,可以直接引用里面的函数/类
print(a)
b = MyNum()
b.print123()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。