orlandowww 2018-12-05
作为一个编程人员,好多人都想自己造个“轮子”被人使用并熟知。但也有些人之所以自己造轮子,也不单单是奉献群体,主要是项目需要。就好比车辆组装一样,市面上买的轮子不一定就是自己适合的或喜欢的,所以自己动手写个“轮子”也无可厚非。
那么今天我们就来讲一讲,如何自己封装一个python模块。
把一个或多个函数独立封装到一个py文件中,在另一个py文件中调用,要想调用,首先要导入模块名,然后再调用模块中的函数名。
注:模块中的变量不可以在模块之外单独使用。
例:
想要引用某个模块:import 模块名
import Phone #导入手机模块
想要引用某个函数:form 模块名 import 模块下的函数名
form Phone import HUAWEI #导入手机模块下的 华为函数
以上是简单的常规引用,我们下面继续说如何构建一个可以安装的模块。
以上是基本步骤,下面重点来了!
我们先来创建一个文件夹,起名叫phone(当然模块名要相同)
然后创建一个模块,比如说这里我们起名叫phone.py来实现一个手机功能的库:
def call(number):
print('正在打电话给:' + number)
def sms(smsText):
print('发送内容为:' + smsText)
接下来我们创建一个setup.py:
from distutils.core import setup
setup(
name = '模块名',
version = '版本',
py_modules = ['phone'],
author = '作者',
author_email = '邮箱',
url = 'url地址',
description = '描述',
)
把上面的信息填写完整,然后把phone.py跟setup.py拖到phone的文件夹下。
打开命令行,切换进phone的文件夹,执行以下命令进行安装:
python setup.py install
安装完后就可以进行调用了,比如说我们想打电话,那么需要调用phone模块下的call()函数并传入号码参数来拨打电话,如:
from phone import call
number='10086'
call(number)
然后运行就会打印出以下内容:
正在打电话给:10086
如果我们想发短信,那么同样可以调用sms()函数,并传入参数。这次我们换一种导入方式:
import phone #只导入模块
smsText='老王走了吗?'
phone.sms(smsText)
然后运行就会打印出以下内容:
发送内容为:老王走了吗?
这两种调用方法哪种都可以,只不过第一个例子是仅仅引用了phone下的call函数,而第二个是将phone模块下的函数都导入了。
当然,如果不满足本地用户使用,你也可以传到PyPI社区,供全球人使用~
首先你需要在PyPI官网注册一个账号:
http://pypi.python.org
然后在在user/tank文件夹下创建.pypirc文件
参考代码:
[distutils]
index-servers =
pypi
[pypi]
repository: https://upload.pypi.org/legacy/
username: your username
password: your password
安装twine:
pip install twine
然后利用twine上传我们的模块到PyPI社区:在phone文件夹下执行:
twine upload dist/*
然后就可以发布到网络上让其他人共用啦~但是有时候通常会报错,前提是你的模块名字没有跟其他人的重复才行!