笨方法学Python:包、模块与类

今天跟大家讲一下Python的组织架构,一方面方便大家理解这些编程术语以及生活中看到的一些代码;另一方面,为了大家进入下一阶段Python面向对象的时候不会一头雾水。先让大家看一下Python项目的组织架构图。

接下来按照顺序介绍一下它们吧。

1. 包(package)

包其实可以理解为文件夹,这个文件夹下面放着很多模块。(模块其实就是你写的那些.py文件)包其实的作用就是将代码文件给整合在一个文件夹下面,方便调用和管理。

正常引用一个包是这样做的:

包的命名和文件夹命名一样,不过还是那句话,不要用中文。

那Python如何识别普通的文件夹与包呢?包有一个标志文件,叫做__init__.py,假如一个文件夹下面有这个模块(文件),那么Python就会认为这个文件夹是一个包。

在这里,跟大家再讲一个知识点,叫做绝对路径和相对路径,绝对路径是从盘符开始的路径,形如:

C:windowssystem32cmd.exe。相对路径:是从当前路径开始的路径,假如当前路径为C:windows,要描述上面的路径,则是.system32cmd.exe。.的意思就是当前目录下的意思,..则是上一个目录。之后遇到的话会跟大家再次提及。

2.模块(module)

模块其实可以理解为包下面的.py后缀的文件。引入方式如下,假如你在chinese.py下定义了一个变量

people = 1,想在math.py下使用:

同时,你会发现在bao的文件夹下生成了一个文件夹__pycache__,不需要理会它,是用于加快Python执行速度用的。

那现在假如有这样的情况,有两个包下面有两个同名的模块,那该怎么区分呢?这里就要引入命名空间的概念了,命名空间是名字和对象的映射,怎么理解呢?比如在刚才的包下面有两个子包(就是包下面的包)sub_bao和sub_bao2,它们都有叫chinese的模块,sub_bao模块下有个变量a,sub_bao2下面有个变量b:

引用如下:

或者可以这样:

觉得第二种太长了,可以这样缩减:

现在来说说那个包的标识文件有什么用,其实是叫做初始化模块,它的作用是当你导入一个包时,会自动执行这个__init__.py的代码,比如在sub_bao的初始化模块写下如下代码:

之后引入这个包,执行代码你会发现:

3. 类(class)

类其实是关于面向对象的知识,我打算下一篇文章对大家进行讲解,因为这个知识比较抽象,可能无法一下子理解它,不过其实它就是模块下的代码,它长这样:

今天的内容就到这里,大家可以自行在网上了解一下Python自带的包,引入玩玩看,就当是课后作业吧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181221G003TR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券