Python模块与包(15/30)

前言

Life is short,you need Python !(持续更新)

大纲

  • 模块
  • 模块代码编写基础
  • 模块包
  • 高级模块话题

模块

模块的定义

模块是最高级别的程序组织单元,它将程序代码和数据封装起来再加以利用,同时提供包含的命名空间从而避免出现命名冲突。

  • import使用户(导入者)以一个整体获取一个模块
  • from允许用户程序从一个模块文件中获取特定的名称
  • import.reload提供了一种在不终止程序的情况下重载模块代码的方法

模块扮演的角色

代码重用

模块中的代码是持续存在的。模块可以被多个外部的用户引用。模块化编程设计能够将代码按照功能组织成可重用的单元。

系统命名空间的划分

模块是Python最高级别的程序组织单元。使用模块能够避免程序中的名字冲突。

实现共享的服务和数据

从操作层面来讲,模块对实现系统内存共享的组件是很方便的。

如何组织一个程序

一个Python程序包含了多个含有Python语句的文本文件。程序拥有一个主体的顶层文件,辅以零个或者多个被称为模块的支持文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9GucPHJQ-1597129349314)(en-resource://database/2801:1)]

模块工作原理

顶层文件(又称为脚本)包含了程序的主要控制流程:这就是用来启动应用的文件。而模块文件式工具库,用于提供顶层文件组件支持。导入模块,获取它的属性从而使用其中的工具。

import是如何工作的

在Python中,导入并非只是把一个文件插入到另外一个文本文件的当中。导入其实是运行时的操作,程序第一次导入指定文件的时候,会执行三个步骤:1、找到模块文件;2、编译成字节码(如果需要的话);3、执行模块的代码来创建其定义的对象;注意:在之后导入会跳过三个步骤,直接从内存中已经加载过的模块对象。

模块搜索的路径

  1. 程序的主目录(自动)
  2. PYTHONPATH(可配置)
  3. 标准库(自动)
  4. 任何.pth文件中的内容(自动的)
  5. 第三方扩展应用的Lib\site-packages目录(自动)

如果想知道机器上实际模块搜索路径,可以通过内置的sys.path列表查看。

模块代码编写基础

模块的使用

用户可以执行import或from语句使用模块文件。如果模块没有加载,这两个语句就回去搜索、编译以及执行模块文件代码。

import 和 from 的主要差别
  • import会整体读取一个模块,所以后续必须通过.点号来获取里面的名称。
  • from将从模块中读取(或者是复制)特定的名称。

语句

就像def一样,import和from是可执行的语句,而不是编译的声明。被导入的模块和名称,只有在它们所对应的import和from语句执行后,才能使用。

from语句潜在的陷阱

因为from语句会让变量的位置更隐式和模糊。所以,一般情况下推荐使用import而非from。from语句确实有破坏命名空间的可能性,如果导入的名称跟作用域中现有的明明相同,就会悄悄的覆盖掉。

必须使用import的场景

当必须使用两个模块中定义了相同命名的变量时,可以使用as 重命名。模块的命名空间可以通过dir()来获取。

模块包

包导入基础

包导入在基础水平是很直观的,在import语句中例举简单的文件名的地方,也可以改成彼此点号相隔的路径名称。

为什么要使用包导入

因为包是相对高级的功能,包让导入包含了更多信息,并可以作为组织工具来简化模块路径搜索,解决模糊性。

高级模块话题

模块设计概念

  1. 在Python中总是位于某个模块内的。
  2. 最小化模块耦合:全局变量。
  3. 最大化模块内聚:统一的目标。
  4. 模块尽可能不去更改其他模块的变量。

在这里插入图片描述

混合模式 __name__ 和 __main__

如果文件作为顶层程序文件执行,在启动的时候__name__就会被设置成为字符串“__main__”

如果文件被导入,__name__就会改变客户程序所了解的模块名。

回顾总结

思维脑图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值