加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

六个步调,封装你喜欢的Python代码包

发布时间:2019-10-08 23:38:52 所属栏目:建站 来源:读芯术
导读:假设你很喜好用统一段Python代码,内里有几个相干的小型函数,可能是含有几百行代码的中型模块。措施员也许会把它复制到差异的项目或存储库中,可能从出格配置的适用器材代码文件夹中导入这段代码。 这很正常。措施员在编写代码的进程中城市不绝蕴蓄这些个
副问题[/!--empirenews.page--]

假设你很喜好用统一段Python代码,内里有几个相干的小型函数,可能是含有几百行代码的中型模块。措施员也许会把它复制到差异的项目或存储库中,可能从出格配置的适用器材代码文件夹中导入这段代码。

六个步调,封装你喜欢的Python代码包

这很正常。措施员在编写代码的进程中城市不绝蕴蓄这些本性化的小器材。对比其他编程说话来说,Python更轻易蕴蓄这些语句——这些代码很是适用。

假如无需复制,就可以轻松导入本身开拓的小器材,并举办更新和维护,岂不是更好吗?假如不依靠于特定的文件或路径,让这些代码在差异的情形、呆板和语境中都合用?假如可以将这些本性化器材版本化,并使相干代码清晰地反应出其依靠性呢?假如这个器材能为公共所用呢?

没错,它都可以做到。

虽然,这个观念不是第一次提了。这就是凡是在编程说话中行使模块、包和库的缘故起因,出格是在Python的开拓情形中。它的实现可使Python成果越发强盛;只需简朴的pip install 和 import就能得到BeautifulSoup的html理会成果或pandas的数据帧处理赏罚成果。

其它,大家都可以将本身的代码在PyPI上编写和宣布(PyPI是Python包的官方索引:http://pypi.python.org/pypi),使它们与sklearn、requests或delorean(都长短常适用、风行的Python包)一样简朴易得。以下是它的几点上风:

  • 纵然只有很少人行使,共享本身的代码还是一件很风趣的事;措施员可以在事变、社群勾当或求职口试平分享并展示本身的劳动成就。
  • 通过逼迫性地清算和记录代码,果真给偕行举办评价,从而改造代码。
  • 它还能补充社群的不敷。你会惊奇地发明,许多人会留意到你的序列化异常高效,好比将HTTP报头序列化到JSON。可能发明本身建设的用来验证输入MongoDB查询文档修饰符的器材有何等适用。

心动了吗?健忘谁人旧的Python模块,开始建造小型Python包吧。

六个步调,封装你喜欢的Python代码包

图1: Python dust

步调一:定名

起首是定名。好的名字凡是较量简短,便于在pip install 或 import 完成之后输入(尽量此刻已经呈现了“自动输入”);还要包括足够的信息便于领略,可能在安装完成后之后提醒个中的内容。

requests认真处理赏罚HTTP哀求、delorean认真日期和时刻,sklearn认真提供呆板进修框架,这些都是很好的例子。在为pandas管道包(因为pandas 凡是以pd这样较短别名导入,故行使pdpipe:https://github.com/shaypal5/pdpipe)缓和存包(cachier:https://github.com/shaypal5/cachier)定名时,笔者也实行过这些例子。

不外诚恳说,这些并不是听命的法则。风行的Python包都有pandas、 keras、 django、 boto、 jinja、 flask 和 pytorch等名称,各人能记着这些名字,以是读者也可以行使任何简短且可读的名称(譬喻,因为可读性题目,笔者将“Scikit-Learn Wrappers for FastText”缩写成了skift)。本文以chocobo为例。

步调二:确定代码包的根基布局

接下来,通过几个简短的步调,建造一种通用的布局:

1.用代码包的精确名称建设一个Github存储库,不要行使驼峰式或过多的小我私人施展。然后在当地举办复制。

2.在该存储库中新建一个文件夹,用代码包的精确名称定名;这就是生涯代码包的文件夹。这是一种类型,只需记着外部的chocobo 文件夹(在本例中)就是存储库的文件夹,而内部的chocobo 文件夹是包的文件夹。

3.将本身的模块和涉及到的任何其他模块放在内部的chocobo文件夹中。假如存在缺失的部门,请添加__init__.py 文件。

4.将用户直接挪用的重要工具(凡是是函数)从各自的模块中导入至__init__.py文件。有了代码包的定名空间,就可以行使这些函数、分类和变量了。假如乐意,也可以行使代码包的API。

5.固然不是逼迫划定,笔者凶猛提议在代码包或在存储库的根目次中都应包括一个 .gitignore 文件。

示例:https://github.com/github/gitignore/blob/master/Python.gitignore

此刻有了一个布局,可以添加差异范例的文件构成代码包;内部文件夹生涯的是包的代码,外部文件夹生涯的是帮助包文件和其他与存储库相干的文件。

因此,初始模块chocobo.py如下所示:

  1. """My chocobo cooking script.""" 
  2. import os 
  3. def chocobo_roast(num_guests, hotness_level): 
  4.  # amazing python code here 

新建存储库文件夹如下所示:

  1. chocobo/ 
  2.  chocobo/ 
  3.  __init__.py 
  4.  chocobo.py 
  5.  .gitignore 

__init__.py 文件应如下所示:

  1. """chocobo is a python package for delicious Chocobo recipes.""" 
  2. from .chocobo import ( 
  3.  chocobo_roast, 

那么在完成封装之后,chocobo包可以有这样的行使要领:

  1. """I'm a script or a different package using chocobo.""" 
  2. import chococbo 
  3. def my_feast(num_guests): 
  4.  snacks = bobbish() 
  5.  main_course = chocobo.chocobo_roast(num_guests, 0) 
  6.  dressing = szechuan_chicken_mcnugget_sauce() 

以上就是一些要点。

步调三:容许题目

行使共享容许宣布代码是较为可取的;假如要将本身的代码果真分享,措施员会想要在保存版权的条件下获得重用代码的容许,可能让那些扩展本身代码的人担保衍生代码可以自由行使。得到许也许轻松办理这些题目。

对付无足轻重的小项目,可以思量MIT容许(https://choosealicense.com/licenses/mit/)。choosealicense.com(https://choosealicense.com/)提供了许多GitHub和开源社区中的适用提议。

无论选择哪种容许,都比基础不消要好。许多时辰,在没有容许的环境下果真代码还不如不果真;假如措施员不明晰本身对代码的全部权,大大都公司会由于也许造成的法令纠纷而放弃,从而失去很多隐藏用户。

选择容许后,在存储库中建设LICENSE容许文件(不必要文件扩展名),并导入所选容许简直切文本。

步调四:安装文件

此刻建设Python封装器材所需的根基文件(以setuptools为例);setup.py.setup.py 包括了构建和刊行时行使的现实指令。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读