Python系列 (9) 如何编写 自定义模块

前言

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章