python模块和包相关知识

一、模块
1.基本概念
物理的角度:一个文件就是一个模块。
逻辑的角度:模块(功能划分)

模块中可以定义的内容: 类、函数、变量

模块的名字就是文件的名字,被存储在模块命名空间。

划分模块的好处:
(1)有利于项目按照功能进行划分,每个人负责一个模块或多个模块,方便协作开发。
(2)模块提供了独立的命名空间(全局命名空间),可以解决命名冲突问题。
(3)模块可以提供多人使用,提高程序的复用性。

在python中,一个模块可以支持多个class的建立。

2.模块的使用
模块的导入: import from … import
(1)模块导入import
导入格式:import 模块名(如果有多个模块,可以使用,分隔)
当我们导入一个模块后,计算机会将该模块中所有的语句都编译执行,但是只在第一次import执行,只执行一次,再次导入也不会再执行了。

调用导入的模块格式: 模块名.模块下的方法、属性

在当前模块中定义的变量或者函数不会跟导入模块中的变量或函数名字冲突

(2)from … import :可以选择性导入模块中属性或者方法
from … import与import一样,在导入时,也会执行被导入模块下的所有代码。
使用from … import模式可能会造成跟当前模块中的名字冲突。以后面定义的名字为准。
格式:

访问:直接使用import进来的名字即可。

将模块中所有名一次性全部导入(慎用)

dir函数,返回指定对象相关绑定的名字,如果没有参数,会返回当前作用域下的名字。

3.模块的别名
当导入模块的时候,可以使用as为导入的模块名字进行重命名

一旦名字被重命名,原名字就不能再用了。

别名的好处:
(1)可以解决当前模块和引用模块的命名冲突问题
(2)如果导入模块的名字很长,可以起到简化作用

4.隐藏模块的数据
只对 from import * 有用,对import不起作用
两种方式:
(1)标明不能被导入的名字
方法:名字前面_ 例如:_w
如果直接写明from 模块 import 变量名——–不受不能导入的限制
只有from 模块 import * 才受限
(2)标明能被导入的名字
方式: all=[“能够被导入的名字”,“能够被导入的名字”….]
只有from 模块 import * 才受限

5.name
能够返回当前模块的名称
一个模块一个py文件运行的时候,有两种方式:
一种是脚本执行(文件式),直接run —— name == main
另一种是通过其他模块import当前模块 —– name == 模块真实的名字

6.模块的搜索路径
(1)内建解释器
(2)上一步没找到, 作为脚本执行模块的所在路径
(3)上一步还没找到, python的环境变量路径
(4)还没找到, python的安装路径(lib包下)
注意,模块起名字不要起lib包下的名字,也不要去用内建解释器下的名字

7.模块的缓存
导入模块时,会产生一个缓存文件.pyc,字节码文件,预编译文件
产生的时间:模块导入的时候就产生了,自定义的py模块,在被导入的时候会被创建。
产生的位置:当前文件路径下创建pycache

(1)缓存字节码文件只是提高模块的加载速度,并不是提高模块的运行速度
(2)只有自定义的模块才能产生字节码文件
(3)字节码文件可以脱离源文件执行(跨平台)

二、包
1.基本概念
包提供了更加独立的命名空间,一个包可以包含多个模块,也可以包含多个子包。
包的作用:
(1)提供模块的分类管理
(2)包提供了独立的命名空间,解决模块重名的问题

2.导入包(跟模块几乎一样)
import包名.模块名
import包名—–导入包下面所有模块

3.init.py文件
init文件是每个python的开发包必须存在,否则python解释器会把当前的文件认为是普通目录,不会执行
init可以是空的,也可以用来进行初始化,在init中定义的名称全部都是全局作用域的。
引用的时候,【包名】.【名称】引用,名称被认为是包的属性。
在init下定义的变量,在整个包的所有py模块中都可以访问到。
init文件,当被import包调用的时候,会执行init中的所有代码。

4.all变量
在init文件中,可以使用all控制使用 from…import * 方式能够导入哪些名称

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值