跟老齐学Python之编写模块

编者按:InfoQ开设栏目“品味书香”,精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大家关注。本文节选自齐伟著《跟老齐学Python从入门到精通》中的章节“模块之编写模块”,介绍Python如何编写自己的模块。

\\

随着对Python学习的深入,其优点日渐突出,让读者也感觉到Python的强大了,强大感觉之一就是“模块自信”,因为Python不仅有自带的模块(称之为标准库),还有海量的第三方模块,并且很多开发者还在不断贡献自己开发的新模块,正是有了这么强大的“模块自信”,Python才被很多人钟爱。并且这种方式也正在不断被其他更多语言所借鉴,几乎成为普世行为了(不知道Python是不是首倡者)。

\\

“模块自信”的本质是:开放。

\\

Python不是一个封闭的体系,而是一个开放系统。开放系统的最大好处就是避免了“熵增”。

\\
\

熵的概念是由德国物理学家克劳修斯于1865年所提出,是一种测量在动力学方面不能做功的能量总数,也就是当总体的熵增加,其做功能力也下降,熵的量度正是能量退化的指标。

\\

熵亦被用于计算一个系统中的失序现象,也就是计算该系统混乱的程度。

\\

根据熵的统计学定义,热力学第二定律说明一个孤立系统倾向于增加混乱程度。换句话说就是对于封闭系统而言,会越来越趋向于无序化。反过来,开放系统则能避免无序化。

\
\\

编写模块

\\

想必读者已经熟悉了import语句,曾经有这样一个例子:

\\
\\u0026gt;\u0026gt;\u0026gt; import math\\\u0026gt;\u0026gt;\u0026gt; math.pow(3,2)\\9.0
\\

这里的math(是Python标准库之一,在本章,我们要逐渐理解模块、库之类的术语。)就是一个模块,用import引入这个模块,然后可以使用模块里面的函数,比如pow()函数。显然,这里是不需要自己动手写具体函数的,我们的任务就是拿过来使用。这就是模块的好处:拿过来就用,不用自己重写。

\\

1.  模块是程序

\\

“模块是程序”一语道破了模块的本质,它就是一个扩展名为.py的Python程序。

\\

我们能够在应该使用它的时候将它引用过来,节省精力,不需要重写雷同的代码。

\\

但是,如果我自己写一个.py文件,是不是就能作为模块import过来呢?还不那么简单。必须得让Python解释器能够找到你写的模块。比如,在某个目录中,我写了这样一个文件:

\\
\#!/usr/bin/env python\\# coding=utf-8\\lang = \"python\"
\\

并把它命名为pm.py,那么这个文件就可以作为一个模块被引入。不过由于这个模块是我自己写的,Python解释器并不知道,得先告诉它我写了这样一个文件。

\\
\\u0026gt;\u0026gt;\u0026gt; import sys\\\u0026gt;\u0026gt;\u0026gt; sys.path.append(\"~/Documents/VBS/StartLearningPython/2code/pm.py\")
\\

用这种方式告诉Python解释器,我写的那个文件在哪里。在这个方法中,也用了模块import sys,不过由于sys是Python标准库之一,所以不用特别告诉Python解释器其位置。

\\

上面那个一长串的地址是Ubuntu系统的地址格式,如果读者使用的是Windows系统,请写你所保存的文件路径。

\\
\\u0026gt;\u0026gt;\u0026gt; import pm\\\u0026gt;\u0026gt;\u0026gt; pm.lang\\'python'
\\

在pm.py文件中有一个赋值语句,即lang = \"python\",现在将pm.py作为模块引入(注意作为模块引入的时候不带扩展名),就可以通过“模块名字”+“.”+“属性或方法名称”来访问pm.py中的东西。当然,如果要访问不存在的属性,肯定是要报错的。

\\
\\u0026gt;\u0026gt;\u0026gt; pm.xx\\Traceback (most recent call last):\\  File \"\u0026lt;stdin\u0026gt;\
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值