零基础学习Python之模块一

北京治皮炎最好医院 http://m.39.net/pf/a_8833134.html

本文字数:字

阅读本文大概需要:5分钟

写在之前

随着我们对Python的逐步学习,相信Python的强大你也感觉到了,它主要体现在Python的「模块」上,因为Python不仅有很强大的标准库,还有数不胜数的第三方模块(或者包,库),并且许多的开发者还在不断的贡献着自己的新模块。

正是因为Python强大的「模块自信」和它开放包容的态度,Python才被很多人所钟爱,并且这种方式也在不断的被其他更多的语言所借鉴,几乎成了普世行为。

编写模块

学到现在,相信你已经很熟悉import语句了,下面我们来看一个之前说过的例子:

importmathmath.pow(2,3)8.0

这里的math就是Python标准库中的一个,用import引入这个模块,然后可以使用他这里面的方法,比如pow()。显然不需要自己动手来写具体的函数,我们要做的就是拿过来直接用,这就是模块的好处。

这里有一点需要注意的是,我们所说的「模块」,「库」,「包」什么的是有区别的,只不过我们现在不区分,随着学习的深入就会慢慢明白的。

模块是什么?

模块是什么?「模块是程序」!大佬们的话一语道破本质,它就是一个扩展名为.py的Python程序,我们要在应该使用它的时候将它引用过来,不需要重写雷同的代码。

这里可能会有人问:但是如果要我们自己写一个.py文件,是不是就可以作为模块import呢?事情远没有那么简单,还必须让Python解释器可以找到你写的模块才可以:比如我们在/usr/lib下建了一个名为test.py的文件,你想把它作为一个模块引入,就必须先告诉Python解释器我们写了这么一个文件:

importsyssys,path.append(/usr/lib/test.py)

用上述的方式就是告诉Python解释器我们写的那个文件在哪里,在这个告诉的方法中也用了importsys,不过sys是Python的标准之一,所以不需要特别告诉Python解释器的位置。

上面的是在Ubuntu系统的地址格式(我随手写的地址),如果用的是windows的话,则要注意文件路径的写法,直接importtest就好,然后再调用里面的东西就好了,形式是「模块名.属性或类」,当然,如果不存在的话就会报错。

到这里,你可以去看一下你刚才存储的test.py的目录中,是不是又多了一个__pycache__的目录,并且该目录下还有pm.cpython-**.pyc文件,这个就是刚才test.py文件编译之后的文件。

不知道你是否还记得前面写完程序然后要执行时我们常常用到if__name__==__main__,那时候我们直接用python**.py的格式来运行该程序,此时我们同样也有了.py文件,不过在这里是作为模块引入的。

PS:一般情况下,如果仅仅时作为模块引入,不必写__name__==__main__。

模块的位置

为了让我们自己写的模块可以被Python解释器知道,需要用sys.path.append(/usr/lib/test.py)。你看,这多麻烦,这么麻烦还是我们Python嘛!所以,Python想了一招,把所有可用的模块都加入到了sys.path中,用下面的方法可以看到模块所在的位置:

importsysimportpprintpprint.pprint(sys.path)

打印出来的结果,你可以看到我们自己写的那个文件,结果列表里所包括位置内的.py文件都可以作为模块引入。

将模块文件放到指定的位置是一种不错的方法,但是作为一个放飞自己爱自由的程序员,你就得想能不能放到别处呢?答案是肯定的,用sys.path.append()就可以做到,不管把文件放在哪里,都可以把其位置告诉Python解释器。虽然这种方法在前面使用了,但其实这个很不常用,因为它也有麻烦的地方,比如在交互模式下,如果关闭了当前的terminal,再重新开启一个的话又得重新告知。那么有没有舒服点的方法呢?有的,比较常用的就是「设置环境变量」,相信这个对于现在的你来说是小菜一碟的事情,实在不会的话随便Google一下,答案一大把。

写在之后

今天就是继续了解一下模块,上面的模块虽然看起来比较简单,但是已经显示了编写模块和在程序中导入模块的基本方式。当然了,在实践中所编写的模块也许更复杂一些,明天我们将来练习一下,然后再学习一下「库包」,敬请期待。

如果你觉得本篇文章对你有所帮助,欢迎点赞转发,谢谢支持。

Theend。




转载请注明:http://www.aierlanlan.com/cyrz/4337.html