零基础学习 Python 之模块(二)

本文字数:2238 字

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

写在之前

在昨天的文章(

零基础学习 Python 之模块(一)

)中我们是在原来知识的基础上继续的了解了一下「模块」,已经显示了编写模块和在程序中导入模块的基本方式,当然了,在实践中所编写的模块会更复杂一些,今天我们要继续的学习下去。

__all__ 在模块中的作用

首先,我们先来写一个模块,且把它命名为 test.py:

接下来就是我们熟悉的操作了,进入到交互模式,test.py 这个文件就是一个模块,该模块中包含了变量和函数

以上变量 public_name 可以被使用,但是另一个变量 _private_name 不能被调用,我们先来看一下两者的区别,后者是以单下划线开头的,说明这是一个「私有变量」。而 from test import * 的含义是「希望可以访问模块(test)中有权限访问的全部名称」,那些被视为私有的变量或者函数或者类等,当然是没权限访问的。

再比如以下的操作:

然后,这个其实不是绝对的,如果想要访问具有私有性质的东西,可以像下面这样操作:

下面让我们对 test.py 进行改写,增加一些东西:

在上面这个修改的 test.py 文件中,增加了 __all__ 属性及其相应的值,在列表中包含了一个私有变量和一个函数的名字,这个其实是在告诉引用本模块的解释器,这两个东西是有权限被访问的,而且只有这两个东西。

果不其然,曾经不能被访问的私有变量现在能够访问了。

因为上述的变量没有在 __all__ 的值中,虽然曾经可以被访问,但是现在就不行了,剩下的几个也是如此,可以自行尝试一番。

这个只不过是再次说明前面的结论罢了。当然,如果以 import test 引入模块,再用 test._private_man() 的方式是一样的。

包 & 库

其实看名字我们大体可以知道,「包 & 库」应该是比模块大的。事实上也是如此,一般来讲,一个「包」里面会有多个模块,当然「库」是一个更大的概念,拿 Python 来说,Python 标准库中的每个库都有好多个包,每个包又有好多个模块。

既然一个包里有多个模块,那么这个所谓的「包」其实可以看做是我们熟悉的「目录」,现在就需要解决如何引用某个目录中的模块问题了,解决办法就是在该目录中放一个 __init__.py 的空文件,将它放在某个目录中,就可以将该目录中的其它 .py 文件作为模块被引用。

写在之后

模块的小入门到这就结束了,不知道你掌握了多少。不知道你有没有听说过「Python 自带 “电池”」这句话,在 Python 被安装的时候,就有不少模块随着安装到了本地的计算机上,这些东西让 Python 拥有了无限生机,我们将这些在安装 Python 时就默认已经安装好的模块统称为「标准库」,熟悉标准库是学习编程必须要做的事,所以,这就是我们明天要继续干的活。

如果你觉得本篇文章对你有帮助的话,欢迎点赞转发。

The end。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180907A0ANLD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券