python3包与模块

高性能、封装性、可复用的代码考验逻辑能力和抽象能力

Python工程的组织结构:包、模块儿、类

最顶级的组织结构:包(文件夹)

第二个层级:模块(文件)

第三个层级:类

第四个层级:函数、变量(不属于组织结构,是类本身的特性)

Python包与模块的名字

区分不同包的同名模块:包名.模块名 形成的模块的路径叫做命名空间

一个包下面可以有子包,模块可以和包平级

普通文件夹想要变成包必须要有init.py文件init.py本身也是一个模块,可以不写内容只是标注包 特殊地,init.py模块的名字就是包名

import导入模块

对于重复的定义需要从其他模块里引用。 利用 import 模块名 导入

import导入的总是模块,需要用模块名.变量名的方法引用 可以用as简化书写

优点是可以一眼看出属于哪个模块

from import 导入变量

也可以from 包 import 模块 引用时用 模块.变量

引用大量变量时使用 * :

控制*的行为:

init.py 的用法

隐藏.pyc文件夹

代码换行:在上一行末尾加上\或者加上括号利用括号的特性换行

当包被导入时,init.py会首先自动被执行

init.py的应用场景

包与模块的几个常见错误

包和模块是不会被重复导入的,只会执行一次(入口文件的概念) 避免循环导入,不要形成闭环 导入模块的时候会执行模块里所有的代码

模块内置变量

入口文件和普通模块内置变量的区别

name的经典应用

dir()可以打印当前所有变量,若不传参数显示所有,传参显示特定的变量

cmd中 python -m 命名空间.模块 可以将其当作模块来运行 作为普通模块必须要有包,可执行文件没有包

相对导入和绝对导入 一

有一个主入口文件。 可执行文件和顶级包在同一级。 绝对导入:从顶级包开始往下导入 相对导入:. 当前目录 ..上级目录 ...上上级目录

相对导入和绝对导入 二

相对导入不能超过顶级包。 入口不能用相对路径导入,相对路径根据name定位,而入口文件被强制改成了main所以不能使用。 若想在入口文件使用相对导入,用-m。

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

扫码关注云+社区

领取腾讯云代金券