python中模块导入模式详解
作者:Java学术趴 时间:2022-04-03 08:54:29
模块导入
1.1 import导入模块
所谓的模块其实就是一个外部的工具包,其中存在的其实就是Python文件,这些文件都实现了某种特定的功能,我们导入包之后直接使用即可,非常的方便。
在开发中使用最多的就是使用: import 方式进行导入。导入的包一般放在文件的最前面。
语法格式 : import 模块名
# 导入时间模块
import timr
# 使用时间模块中的方法
time.ctime()
调用模块方法的语法格式: 模块名.函数名 ,这样调用可以防止不同模块中有同名方法导致错误。
1.2 from 模块名 import 导入模板的方法
一个模块可能存在很多的函数,如果只是想导入其中的几个函数,可以使用from xxx import xxx 方式导入。
使用这种方式导入之后不用在使用 模块名.函数名 的方式来调用函数,可以直接使用 函数名。但是一定要注意这种形式可能会产生覆盖的情况,当导入了两个不同包中的同名的函数的时候,第二个函数会覆盖第一个函数
举例:只想导入time模块中的ctime、time两个方法,可以按照以下的格式导入:
# 导入模块中指定的方法
from time import ctime,time
# 调用方法
ctime()
time()
注意:使用from导入,如果函数名相同,后面导入的会覆盖前面导入的函数。
可以一次性的把一个模块中的全部数据进行导入。 语法格式: from xxx import *
from time import *
1.3 as 关键字
as关键字:给模块取别名,有时候导入的模块的名称很长,调用的时候很不方便,使用as关键字就可以给模块取一个其他的名字。
当给模块起了别名之后以前模块的名字就会失效。
import time as myTime
# 使用别名调用函数,正确
myTime.ctime()
# 使用以前模块的名字调用,错误
time.ctime()
OS模块操作文件
OS模块的作用
对文件进行重命名、删除等一些操作,在Python中可以利用os模块。 os模块提供了一些系统级别的操作命令
模块的制作、发布、安装
3.1 模块制作
Python文件都可以作为一个模块,模块的名字就是文件的名字。比如创建一个test.py文件,文件中创建一个add()函数。此时test.py文件就是一个模块,可以在其他的python文件中直接引入使用。
一个模块中可以包含函数、类、变量,也能包含可执行的代码。
不同的模块可以定义相同的变量名,但是每个模块中的变量名作用域只是在本模块中。
3.2 模块的分
内置:python已经存在的。
自定义:我们自己编写的功能模块。
3.3 示例
定义一个相加的功能模块 (addUp.python 文件)
# 定义一个执行相加的功能模块
def add(x, y):
return x + y
在其他文件中引入并使用这个相加的功能模块
# 引入相加的功能模块(给模块起别名) 引入整个模块
import addUp as add
# 使用引入模块中的函数 (模块名.方法名)
print(add.add(1, 2))
# 3
# 直接引入模块中的指定函数
from addUp import add
# 使用引入模块中的函数 (函数名)
print(add(1, 2))
# 3
# 导入模块中的所有函数
from addUp import *
# 使用引入模块中的函数
print(add(1, 2))
# 3
3.4 测试方法
重点:在功能模块中对模块进行测试的时候,需要使用如下的格式
# 定义一个执行相加的功能模块
def add(x, y):
return x + y
# 测试该模块中的功能。使用这种形式测试就不会发生其他文件在使用这个功能模块的时候输出这个测试结果
# 是因为此时被这个 if 条件进行了控制
if __name__ == '__main__':
# 测试功能模块中的函数
res = add(1, 3)
print('测试模块中的add函数的结果:%s' % res)
# 测试模块中的add函数的结果:4
pass
3.5 all魔术方法
指定对外暴露的功能函数。
# all 魔术方法可以存储让其暴露在外的函数们,将一些函数不对外暴露
# 注意:只有当调用者使用的是 from addUp import * 这种形式的时候all魔术方法才会生效
# 如果使用 from addUp import multiply ,add ,subtract 方式,all也不会生效
# 如果是使用 import 模块名 的形式这个 all 不会生效,这个模块中的所有方法还是全部可以暴露的。
# 总结:all魔术方法只会对 from addUp import * 这种格式的导入生效
__all__ = ['add', 'subtract']
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
# 测试该模块中的功能
if __name__ == '__main__':
# 测试功能模块中的函数
res = add(1, 3)
print('测试模块中的add函数的结果:%s' % res)
# 测试模块中的add函数的结果:4
pass
来源:https://cloud.tencent.com/developer/article/2049099