Python 学习第五天 模块和包的操作 仅做笔记使用

模块 Module

模块是一个包含有一系列数据,函数,类等组成的程序组
模块是一个文件,模块文件名通常以.py结尾

作用
让一些相关的数据,函数,类等有逻辑的组织在一起,使逻辑结构更加清晰
模块中的数据,函数和类等可提供其他模块或程序使用

模块的分类:

内置模块(builtins),在解析器的内部可以直接使用
标准库模块,安装python时已安装且可直接使用
第三方模块(通常为开源),需自己安装
用户自己写的模块,可以作为其它人的第三方模块

模块的导入语句

import 语句

语法: import 模块名1 [ as 模块新名1] [, 模块名2][ as 模块新名2] ,…

作用:将某模块整体导入到当前模块
用法:模块 . 属性名

dir(obj)函数返回模块所有属性的字符串列表
help(obj)可以直接查看模块相关的文档字符串

from import语句

语法
from 模块名 import 模块属性名1 [ as 模块属性新名1] ,模块属性名2 [ as 模块属性新名2]
作用:将某模块内的一个或多个属性导入到当前模块的作用域

from 模块名 import * 语句

作用:将某模块的所有属性都导入到当前模块

dir函数:

dir([对象]) 返回一个字符串列表
作用
如果没有参数调用,则返回当前作用域内的所有变量的列表
如果给定一个对象作为参数,则返回这个对象的所有变量的列表
1.对于一个模块,返回这个模块的全部属性
2.对于一个类对象,返回类对象的所有变量,且递归基类对象的所有变量
3.对于其他对象,返回所有的变量,类变量,基类变量

math()常用函数:

math.e 自然对数的底
math.pi 圆周率pi
math. cell(x) 对x向上取整,比如x = 1.2,返回2
math. floor(x)对x向下取整,比如x = 1.2,返回1
math. sqrt(x) 返回x的平方根
math. factorial(x) 返回x的阶乘
math. log(x [ , base ] ) 返回以base为底x的对数,如果不给出base,则以e为底
math. log10(x) 求以10为底x的对数
math. pow(x,y) 返回x**y(x的y次方)
math. fabs(x) 返回浮点数x的值

角度和弧度degrees互换

math.degree(x) 将弧度x转化为角度
math. radians(x) 将角度x转化为弧度
math. sin(x) 返回x的正弦(x为弧度)
math. cos(x) 返回x的余弦(x为弧度)
math. asin(x) 返回x的反正弦(返回值为弧度)

time 时间模块

此模块提供了时间相关的函数,且一直可用
计算机元年:1970年1月1日0时
UTC时间,不会因时区问题而产生错误
CST -28880

time函数:

time.time() 返回计算机元年至当前时间的描述的浮点值(UTC时间为准)
time.sleep(secs) 让程序按给定秒数的浮点数水面一段时间
time.gmtime([secs]) 用给定秒数转换为用UTC表达的时间元组(缺省返回当前时间元组)
time.asctime([tuple]) 将时间元组转换为日期时间字符串
time.mktime(tuple) 将本地日期时间元组转换为新纪元秒数时间(UTC时间为准)
time.localtime([secs])UTC秒数时间转换为日期元组(以本地时间为准)

系统模块 sys

此模块全部是运行时系统相关的信息

sys模块的变量

sys.path 模块搜索路径path[0]是当前脚本程序的路径名
sys.modules 已加载模块的字典
sys.version 版本信息字符串
sys.version_info 版本信息的命名元组
sys.platform 操作系统平台名称信息
sys.argv 命令行参数argv[0]代表当前脚本程序路径名
sys.copyright 获得python版权相关的信息
sys.builtin_module_names 获得python内建模块的名称(字符串元组)
sys.exit(0) 直接退出程序的执行
sys.getrecursionlimit() 得到递归嵌套层次限制(栈的深度)
sys.setrecursionlimit(n) 得到和修改递归嵌套层次限制(栈的深度)

自定义模块

自定义的模块名必须符合‘标识符’的命名规则(同变量名)
模块有各自独立的作用域
模块化编程的优点:
有利于多人合作开发
使代码更容易维护
提高代码的复用率
有利于解决变量名冲突问题

import语句搜索模块的路径顺序

1.搜索程序运行时的路径(当前路径)
2.sys.path提供的路径
3.搜索内置模块

sys.path是一个存储模块搜索路径的列表

1.可以把自定义的模块放在相应的路径下可以导入
2.可以把自己模块的路径添加在sys.path列表中

模块的加载过程:

1.在模块导入时,模块的所有语句都会执行
2.如果一个模块已经导入,则再次导入时不会重新执行模块内的语句

模块的重新加载:

import mymod()
import imp 专门进行模块管理的模块
imp.reload(mymod) # 重新加载模块

模块被导入和执行的过程:

1.先搜索相关的路径找模块(.py)
2.判断是否有此模块对应的.pyc文件,如果存在.pyc文件且比.py文件新,则直接加载.pyc文件
3.否则用.py文件生成.pyc后在进行加载

pyc模块的编译文件

mymod。py--(编译)—> mymod.pyc—(解释执行)—> python3

模块的属性

属性的实质是变量(是模块内的全局变量)

模块内预置的属性

doc属性 用来绑定模块的文档字符串
模块内第一个没有赋值给任何变量的字符串为模块的文档字符串。

file属性 绑定模块对应的文件路径名
1.对于内建模块,不绑定路径
2.对于其他模块,绑定路径名的字符串

name属性 用来记录模块的自身名字
作用: 1.用来记录模块名 2. 用来判断是否为主模块(最先运行的模块)
说明: 当此模块为主模块时,__name__绑定’__main__’
当此模块不是主模块时,此属性绑定模块名

模块的__all__列表

模块中的__all__列表是一个用来存放可导出属性的字符串列表
作用: 当用 from import * 语句导入时,只导入__all__列表内的属性

模块的隐藏属性

模块中以 ’_’开头的属性,在from import * 语句导入时,将不被导入,通常称这些属性为隐藏属性。

随机模块 random

作用:用于模拟和生成随机输出的模块
import random as R

常用函数:

R.random() 返回一个[ 0, 1)之间的随机实数
R.uniform(a,b) 返回[ a,b)区间内的随机实数
R.randrange([ strat ,] stop [ , step ]) 返回range()中的随机数
R.choice(seq) 从序列中返回随意元素
R.shuffle(seq [ , random]) 随机指定序列的顺序(乱序序列)
R.sample(seq,n) 从序列中选择n个随机且不重复的元素
R.getrandbits(nbit) 以长整型的形式返回nbit位来表示的
R.seed(a = None) 用给定的数a设置随机种子,不给参数a则适用当前系统时间,对于相同的a,生成的数也是相同的。

包(模块包) package

包是将模块以文件夹的组织形式进行分组管理的方法
作用:将一系列模块进行分类管理,有利于防止命名冲突。可以在需要时加载一个或部分模块而不是全部模块。
示例

`mypack/`
      __init__.py   # 包的指示性文件,必须存在
  menu.py
  games/
      __init__.py
      contra.py
      supermario.py
      tanks.py
  office/
      __init__.py
      excel.py
      word.py
__init__.py 文件

常规包内必须存在的文件
__init__.py 会在包加载时被自动调用

作用
编写此包的内容 在内部填写文档字符串
__init__.py内可以加载此包所依赖的一些其它模块

包的导入:

用三条语句可以导入包(同模块的导入规则)
import 包名(as 包别名)
import 包名. 模块名(as 模块新名)
import 包名. 子包名. 模块名

from 包名 import 模块名
from 包名. 子包名 import 模块名
from 包名. 子包名. 模块名 import 属性名 [as 新属性名]

from 包名 import *
from 包名. 模块名 import *

包的__init__.py 内的__all__列表

作用:用来记录此包中有哪些子包或模块在用fromimport *语句导入时是否被调导入
说明__all__列表只对from import *语句起作用

包的相对导入
包的相对导入是指包内模块的相互导入

语法from 相对路径包或模块 import 属性或模块名
form 相对路径包或模块 import *

相对路径: . 代表当前目录 … 代表上级目录 …代表上二级目录
注:相对导入时不能超出包的外部

包的加载路径:

同模块的加载路径相同:1.当前文件夹 2.sys.path给出的路径

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值