【Python零基础】19天从零开始学Python——第二十天 模块

第二十天 面向对象之异常

学习目标:
1、模块
2、了解模块
3、导入模块
4、制作模块
5、__all__列表
6、包的使用方法

一、模块

1、定义

1、Python模块,是一个python文件,以py结尾。
2、其中包含了Python对象定义和Python语句。
3、模块能定义函数,类和变量,可执行代码。
4、是开发Python软件的程序员已经规定好的代码!!!!
5、我们任意使用即可!

2、寻找模块

这里以模块random.py为例,Project->External Libraries->Python 3.6->lib->random.py

在这里插入图片描述

3、导入模块

import模块名
from 模块名 import 功能名1,功能名2,功能名3
from 模块名 import *
import 模块名 as 模块别名
from 模块名 import 功能名 as 功能别名

只导入模块和只进行模块名修改

import模块名
import 模块名 as 模块别名
调用时,需要模块名.功能名()!!!!

# 只导入模块
import math
print(math.sqrt(9))  # 3.0
# 模块名修改
import math as tt
print(tt.sqrt(9))  # 3.0

导入模块的某个功能和进行功能名的修改

from 模块名 import 功能名1,功能名2,功能名3
from 模块名 import *
直接功能名()调用即可!!!!

from math import sqrt
print(sqrt(9))  # 3.0
# 功能别名
from time import sleep as tt
tt(2)
print('yyy')  # yyy

二、制作模块

步骤:
1、定义模块
2、测试模块
3、调用模块

1、定义模块

# 1、定义模块
# 新建python文件,命名.py,(如my_module1.py)按照工作需求定义函数
# (工作中写成英文)
def testA(a, b):
    print(a+b)

# 2、测试模块(不好)
# 3、调用模块
# 通过04调用自己制作的模块.py文件

2、测试模块

# testA(1,2)  # 3
# 调用时,一定要删除,否则会调用

# 2、测试模块(测试模块一直存在,便于随时修改)
# print(__name__)  # __main__当前文件,my_module1调用其模板的py
if __name__ == '__main__':
    testA(1,1)  # 在当前文件下,测试出2

3、调用模块

04调用自己制作的模块.py文件代码:

# 1、导入模块
import my_module1
# 2、调用功能
my_module1.testA(2,2)  # 4

使用if条件书写测试模块的好处:
1、避免了test代码删除、添加,重复工作。
2、在自定义模块中,可以执行检验代码;在其它模块中使用,其模块中的检验代码则不会执行

三、模块定位顺序

模块定位顺序:(默认顺序)
1、当前目录(当前py所在的文件夹)
2、Python搜索shell变量PYTHONPATH下的每一个目录
3、会查看默认路径。例,UNIX下,默认路径一般为/user/local/lib/python/

总结:
1、自己的文件名不能和已有的模板名重复,否则导致模块功能无法使用
2、使用from 模块名 import 功能 的时候,如果功能名重复,调用最后定义或导入的功能

1、定位顺序注意点一

验证自己的文件名不能和已有的模板名重复,否则导致模块功能无法使用

在这里插入图片描述

2、定位顺序注意点二

验证使用from 模块名 import 功能 的时候,如果功能名重复,调用最后定义或导入的功能

在这里插入图片描述

三、名字重复的严重性

以变量名为例

1、变量也能覆盖模块名(很严重)(所以不能起和模块名一样的名字)
2、在Python中,数据是通过引用传递的,后面的数据会覆盖前面的同名数据!
在这里插入图片描述

四、__all__

概念:是模块中的一个变量名,取值为列表数据,所以简称
作用:控制模块导入功能时的导入行为
举例:若一个模块文件中有__all__变量,name导入所有功能时,只能导入这个列表中的元素

1、只导入列表中的一个元素

1-1、导入一个功能,将功能添加到__all__列表中
在这里插入图片描述
1-2、testB没有添加到all列表,所以会报错,只有all列表里的功能才能被调用
在这里插入图片描述

2、导入列表中的多个元素

2-1、若是想要导入多个功能,则将功能添加到__all__列表中即可
在这里插入图片描述
2-2、导入模块、功能,然后调用相应的功能
在这里插入图片描述

五、包

1、包概念

概念:指的是一个文件夹,里面存储有联系的模块。文件夹名字就是包名
里面会自动创建一个__init__.py
作用:找到包,模块里的功能也能使用

2、制作包

步骤:New->Python Package-输入包名-OK-新建功能模块(有联系的模块)
备注:会自动创建的__init__.py文件,控制着包的导入行为

1、创建包

在这里插入图片描述

2、新建模块

在这里插入图片描述

3、书写模块代码

在这里插入图片描述
在这里插入图片描述

3、导入包

两种方式
1、import 包名.模块名导入指定
包名.模块名.目标
2、from 包名 import *导入所有
注意必须要将允许导入的模块写入__all__列表,否则报错
模块名.目标

1、import 包名.模块名导入指定

# 导入包名1:
import mypackage.my_module1
# 调用功能
mypackage.my_module1.info_print1()

2、from 包名 import *导入所有

注意必须要将允许导入的模块写入__all__列表(在包自动创建的__init__.py里面书写),否则报错
按照自己需求,在这种导全部的导包方式下,将模块名添加到__all__列表中。

在这里插入图片描述
导入包时用的代码 09导入包.py

# 导入所有
from mypackage import *
my_module1.info_print1()
# 1
# my_module1

my_module2.info_print2()
# 2
# my_module2

题外话1:若采用第一种导包的方式导入多个模板的话,记得每一个模板前加包名.
PS:不用!因为我们采用第二种导入包名的方式__all__配合使用导入多个模块,会比较好
在这里插入图片描述
题外话2:若是不定位到目标,调用出功能外的其它数据(暂时小编未觉得有多大用),所以说,我们一定要定位到指定的功能最佳!
在这里插入图片描述

总结

1、导入模块的方法

import模块名
from 模块名 import 功能名1,功能名2,功能名3
from 模块名 import *
import 模块名 as 模块别名
from 模块名 import 功能名 as 功能别名

2、调用模块

若是import模块名,模块名.功能名()
若是还有功能名,则直接使用功能名()调用即可

3、导入包的方法

1、import 包名.模块名
包名.模块名.目标
2、from 包名 import *
注意必须要将允许导入的模块写入__all__列表,否则报错
模块名.目标

4、调用包的模块内的功能

若是指定到具体模块名,则全需要书写
若是导入到所有模块,则需要模块名.目标即可

__all__ = []

允许导入的模块或功能列表

5、模块定位顺序(默认顺序)

1、当前目录(当前py所在的文件夹)
2、Python搜索shell变量PYTHONPATH下的每一个目录
3、会查看默认路径。例,UNIX下,默认路径一般为/user/local/lib/python/

6、避免文件名、方法名、变量名于模块名重复

1、自己的文件名不能和已有的模板名重复,否则导致模块功能无法使用
2、使用from 模块名 import 功能 的时候,如果功能名重复,调用最后定义或导入的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值