python之模块简介
模块
简介
模块就是一系列功能的结合体,只需要导入就可以直接使用,它极大的提升了开发效率。比如我自己要实现一个功能可能要写好几行代码,但是如果模块里可以实现这个功能,那我可以直接拿来使用。
模块的三种来源方式:
-
内置的模块
这些是python自带的模块,直接用代码导入就可以使用。
-
自定义模块
这些是自己写的代码封装成模块,可以自己使用或发布到网上
-
第三方模块
这些是由别人发布到网上的,我们可以下载过来使用
模块的四种表现形式:
- 使用python代码编写的py文件
- 多个py文件组成的文件夹,也可以称为包
- 已被编译为共享库或DLL的c或C++扩展(了解)
- 使用C编写并链接到python解释器的内置模块(了解)
模块的导入方式
第一种:import ...
语法结构:
import 模块1, 模块2, ...
这种导入方式可以使用模块内部的变量和方法,一个模块只会被导入一次,不管你执行了多少次import。
案例一:
创建一个md.py文件
name = '来自md.py'
print(name)
创建一个main.py文件
import md
执行main.py文件,此时会输出
来自md.py
说明在导模块时,会执行被导入模块的内部代码。
案例二:
创建一个md.py文件
name = '来自md.py的name变量'
def index():
print('来自md.py的index函数')
创建一个main.py文件
import md
name = '来自main.py的name变量'
print(name)
print(md.name)
def index():
print('来自main.py的index函数')
index()
md.index()
执行main.py文件,此时会输出
来自main.py的name变量
来自md.py的name变量
来自main.py的index函数
来自md.py的index函数
说明导入模块后,想要模块内部变量和函数需要使用模块加点的方式,直接使用只会从当前文件寻找。
图解:
第二种:from ... import ...
语法结构:
from 模块名 import 名称1,名称2,...
这种方式使用模块内部的名称可以不需要用模块加点的方式了,可以直接使用。
案例一:
创建一个md.py文件
name = '来自md.py'
print(name)
创建一个main.py文件
from md import name
执行main.py文件,此时会输出
来自md.py
说明在导模块时,会执行被导入模块的内部代码。
案例二:
创建一个md.py文件
name = '来自md.py'
def index():
print('来自md.py的index函数')
创建一个main.py文件
from md import name, index
print(name)
index()
执行main.py文件,此时会输出
来自md.py
来自md.py的index函数
说明使用from + import方法导入模块后,可以直接使用模块内部的名称,所以这时候就需要避免出现重名的情况。
图解
补充
- 导入模块时可以给模块起别名
import time as t
t.sleep(3) # 等价于time.sleep(3)
from md import name as n, index as x
print(n) # 等价于print(name)
x() # 等价于index()
- 导入全部名称
from md import *
"""如果模块文件中使用了__all__限制可以使用的名字,那么*号就会失效,只能使用__all__后面列举的名字"""
# 在md.py文件中
__all__ = ['name']
# 这时如果使用from md import *只能使用name变量
- 建议
导入个模块时,可以把有相似功能的模块使用同一个import导入,如果没有建议分开导入。