前言
python 中有很多的内置模块,比如 time 模块,我们要使用它的时候,只需要 import time 导入time模块就能够使用了。那么我们怎么自己写模块呢?这是本文要讲的~
一、模块的好处
使用模块之前,必须得说说 模块的好处 , 不然我为啥要用模块呢?
好处:
- 如果没有模块,我们的 .py 文件会随着功能的增多,变得越来越大,代码量非常多。这样是不利于维护的,很繁杂~
- 我们可以将各个功能的代码写成一个一个的模块,这样每个.py文件的代码量就少了,维护起来也方便~
- 一个模块写好后,可以被其它需要的地方引用,减少重复的代码量
- 可以避免函数名和变量的冲突,在自己编写模块的时候,不需要考虑名字会与其他模块冲突,当然,也尽量不要与内置函数名冲突
二、如何写模块
- 一个 .py 文件 就是一个模块
- my_abs.py 文件,my_abs 就是它的模块名
1、在同一目录下创建一个my_abs模块
- 在当前目录下,新建一个 my_abs.py 文件,写入如下代码
# 模块中的函数就是 这个模块的方法
def myabs(num):
if num < 0:
return -num
else:
return num
- 在和 my_abs.py 相同目录下的某个文件中调用自定义模块 my_abs
import my_abs # 导入模块名
print(my_abs.myabs(-1)) # myabs 就是我在 my_abs模块 中定义的方法
# 运行结果
1
2、在不同目录中编写模块
- 这种情况通常是 我自定义的模块名 和 别人写的模块名 重复了的情况下使用(我要写my_abs.py文件,但是现在这个目录中有其他人写的my_abs.py文件)
- 这个时候在当前目录下建一个子目录,比如建一个名为 lxn 的子目录,然后再这个目录中编写 my_abs.py 文件,并且在这个子目录中建立一个 init.py 文件,可以为空。如果不建立这个文件,那么这个目录会被python认为是普通目录,无法调用!
- 这个时候,lxn 目录可以称为 包(package),lxn 目录被称为顶层包名
- 用以上同样的方式,可以有多级目录
在当前目录下建立一个lxn目录,并创建 init.py 和 my_abs.py 文件
- init.py 文件为 空文件
my_abs.py 文件内容
def myabs(num):
if num < 0:
return -num
else:
return num
在 learn python 目录下的任意一个 xxx.py 文件中,调用 my_abs 模块
import lxn.my_abs
print(lxn.my_abs.myabs(-2))
运行结果:
2