目录
⼀. 模块
1.1. 导⼊模块
1.1.1 导⼊模块的⽅式
1.1.2 导⼊⽅式详解
1.2. 制作模块
1.2.1 定义模块
1.2.2 测试模块
1.2.3 调⽤模块
1.2.4 注意事项
1.3. 模块定位顺序
1.4. __all__
⼆. 包
2.1 制作包
2.1.1 快速体验
2.2 导⼊包
2.2.1 ⽅法⼀
⽅法⼆
⼀. 模块
Python
模块
(Module)
,是⼀个
Python
⽂件,以
.py
结尾,包含了
Python
对象定义和
Python
语句。
模块能定义函数,类和变量,模块⾥也能包含可执⾏的代码。
模块分类分为三种:
(1)
内置标准模块
(又称标准库),执行help('modules')查看所有python自带模块列表。
(2)
第三方开源模块
,可通过“pip install 模块名”联网安装。
(3)
自定义模块
,即创建了一个.py文件,就可以称之为模块,可以在另一个程序里导入。
pip是官方推荐的安装和管理Python包的工具,用其来下载和管理Python非常方便。
pip最大的优势是它不仅能将需要的包下载下来,而且会把相关依赖的包也下载下来。使用pip命令可完成扩展库的安装、升级、卸载等操作。
pip工具常用命令
1.1. 导⼊模块
1.1.1 导⼊模块的⽅式
-
import 模块名【as 别名】
-
from 模块名 import 功能名
-
from 模块名 import *
-
from 模块名 import 功能名 as 别名
1.1.2 导⼊⽅式详解
import
语法
# 1.
导⼊模块
import
模块名
import
模块名
1
,
模块名
2
...
# 2.
调⽤功能
模块名
.
功能名
()
体验
import
math
print
(
math
.
sqrt
(
9
))
# 3.0
from..import.. 可以减少查询次数,提高执行速度
语法
from 模块名 import 功能1, 功能2, 功能3...
体验
from
math
import
sqrt
print
(
sqrt
(
9
))
from .. import * 谨慎使用
语法
from
模块名
import
*
体验
from
math
import
*
print
(
sqrt
(
9
))
as定义别名
语法
#
模块定义别名
import
模块名
as
别名
#
功能定义别名
from
模块名
import
功能
as
别名
体验
# 模块别名
import time as tt
tt.sleep(2)
print('hello')
# 功能别名
from time import sleep as sl
sl(2)
print('hello')
可以使用dir函数查看任意模块中所有的对象列表,如果调用不带参数的dir()函数,则返回当前所有名字列表。
可以使用help函数查看任意模块或函数的使用帮助。
模块的导入顺序
在需要导入的模块类型较多时,一般遵守如下导入顺序:
(1)导入Python标准库模块,如sys、os、math等;
(2)导入第三方库,如numpy、Pandas、Matplotlib等;
(3)导入自己开发的模块,即编辑好.py文件。
python对象
常用内置对象
![](https://img-blog.csdnimg.cn/44aa68cf11694d8fad3fe8b6d3422fee.png)
![](https://img-blog.csdnimg.cn/a281dc3d4a914a14bf7cd0b60c1d4de0.png)
1.2. 制作模块
在
Python
中,每个
Python
⽂件都可以作为⼀个模块,模块的名字就是⽂件的名字。
也就是说⾃定义模
块名必须要符合标识符命名规则。
1.2.1 定义模块
新建⼀个
Python
⽂件,命名为
my_module1.py
,并定义
testA
函数。
def
testA
(
a
,
b
):
print
(
a
+
b
)
1.2.2 测试模块
在实际开中,当⼀个开发⼈员编写完⼀个模块后,为了让模块能够在项⽬中达到想要的效果,这个开发⼈员会⾃⾏在py
⽂件中添加⼀些测试信息
.
,例如,在
my_module1.py
⽂件中添加测试代码。
def testA(a, b):
print(a + b)
testA
(
1
,
1
)
此时,⽆论是当前⽂件,还是其他已经导⼊了该模块的⽂件,在运⾏的时候都会⾃动执⾏
testA
函数的 调⽤。
解决办法如下:
def
testA
(
a
,
b
):
print
(
a
+
b
)
#
只在当前⽂件中调⽤该函数,其他导⼊的⽂件内不符合该条件,则不执⾏
testA
函数调⽤
if
__name__
==
'__main__'
:
testA
(
1
,
1
)
1.2.3 调⽤模块
import
my_module1
my_module1
.
testA
(
1
,
1
)
1.2.4 注意事项
如果使⽤
from .. import ..
或
from .. import *
导⼊多个模块的时候,且模块内有同名功能。当调
⽤这个同名功能的时候,调⽤到的是后⾯导⼊的模块的功能。
体验
#
模块
1
代码
def
my_test
(
a
,
b
):
print
(
a
+
b
)
#
模块
2
代码
def
my_test
(
a
,
b
):
print
(
a
-
b
)
#
导⼊模块和调⽤功能代码
from
my_module1
import
my_test
from
my_module2
import
my_test
# my_test
函数是模块
2
中的函数
my_test
(
1
,
1
)
1.3. 模块定位顺序
当导⼊⼀个模块,
Python
解析器对模块位置的搜索顺序是:
1.
当前⽬录
2.
如果不在当前⽬录,
Python
则搜索在
shell
变量
PYTHONPATH
下的每个⽬录。
3.
如果都找不到,
Python
会察看默认路径。
UNIX
下,默认路径⼀般为
/usr/local/lib/python/
模块搜索路径存储在
system
模块的
sys.path
变量中。变量⾥包含当前⽬录,
PYTHONPATH
和由安装过程决定的默认⽬录。
注意
⾃⼰的⽂件名不要和已有模块名重复,否则导致模块功能⽆法使⽤
使⽤
from
模块名
import
功能
的时候,如果功能名字重复,调⽤到的是最后定义或导⼊的功
能。
1.4. __all__
如果⼀个模块⽂件中有
__all__
变量,当使⽤
from xxx import *
导⼊时,只能导⼊这个列表中的元
素。
my_module1
模块代码
__all__
= [
'testA'
]
def
testA
():
print
(
'testA'
)
def
testB
():
print
(
'testB'
)
导⼊模块的⽂件代码
from
my_module1
import
*
testA
()
testB
()
⼆. 包
包将有联系的模块组织在⼀起,即放到同⼀个⽂件夹下,并且在这个⽂件夹创建⼀个名字
为
__init__.py
⽂件,那么这个⽂件夹就称之为包。
2.1 制作包
[New] — [Python Package] —
输⼊包名
— [OK] —
新建功能模块
(
有联系的模块
)
。
注意:新建包后,包内部会⾃动创建
__init__.py
⽂件,这个⽂件控制着包的导⼊⾏为。
2.1.1 快速体验
1.
新建包
mypackage
2.
新建包内模块:
my_module1
和
my_module2
3.
模块内代码如下
# my_module1
print
(
1
)
def
info_print1
():
print
(
'my_module1'
)
# my_module2
print
(
2
)
def
info_print2
():
print
(
'my_module2'
)
2.2 导⼊包
2.2.1 ⽅法⼀
import
包名
.
模块名
包名
.
模块名
.
⽬标
体验
import
my_package
.
my_module1
my_package
.
my_module1
.
info_print1
()
⽅法⼆
注意:必须在 __init__.py ⽂件中添加 __all__ = [] ,控制允许导⼊的模块列表。
from
包名
import
*
模块名
.
⽬标
体验
from
my_package
import
*
my_module1
.
info_print1
()