模块


随机模块 random
import random as R
作用:
  用于模拟或生成随机输出的模块
函数:
R.random() 返回一个[0, 1) 之间的随机数
R.uniform(a, b)  返回一个(a, b) 的随机数
R.randrange([start,] stop [, step]) 返回range(start, stop, step)中的随机数
R.choice(seq)  从序列中返回随机元素
R.shuffle(seq) 随机指定序列的顺序(乱序序列)
R.sample(seq, n) 从序列中选择 n个随机且不重复的元素


系统模块 sys:
  此模块可以获取或设置系统相关的数据
变量:
sys.path  模块的搜索路径
sys.version 版本信息的字符串
sys.version_info 版本信息的命名元组
sys.platfrom     操作系统平台名称信息
sys.builtin_module_names Python 内建模块的名称(字符串元组)
sys.modules  已加载模块字典
sys.argv  命令行参数, argv[0] 代表当前脚本程序路径名




在python的主模的第一行加入:
#! /usr/bin/python3
告诉调用此程序省,以下程序用 /usr/bin/python3这个文件来解释执行
示例:
  见: mygame
  编写mygame
  添加执行权限:
    $ chmod +x mygame
    $ ./mygame
    $ sudo cp mygame /usr/bin/
    $ mygame
   (以上内容不适合window操作系统)





sys模块的函数:
sys.exit()  退出程序
sys.getrecursionlimit()  得到递归的最大层数
sys.setrecursionlimit(n) 设置递归的最大层数


自定义模块:
  用户自己编写模块
示例见:

  和
 
  (必须自定义模块和导入此模块的主模块一定要在同一文件夹内)


自定义的模块导入方法与内建模块相同
  import xxx
  from xxx import yyy
  from xxx import *


模块的加载过程:
  模块在第一次被加载时,所有语句都被执行,以后再将加载时,将不会再次执行模块的内的语句
  
模块的路径搜索顺序:
  import 模块名  # 去哪儿里去找这个模块呢?
  1. 搜索程序运行时的路径(当前路径)
  2. sys.path 提供的路径
  3. 搜索内置模块


模块化编程的优点:
  1. 有利于多人合作开发
  2. 使代码更易于维护
  3. 提高代码的复用率
  4. 模块化编程有助于解决函数名和变量名冲突(重名)问题,(模块内的变量的作用域为模块内全局)


PYTHONPATH环境变量
  PYTHONPATH环境变量里的路径会在python3的解析器启动时自动加载到sys.path列表中


添加Linux/Unix环境变量:
  $ export PYTHONPATH=/home/tarena/aid1711


看查Linux/Unix环境变量:
  $ printenv






模块的文档字符串:
  模块中,第一个没有赋值给任何变量的字符串是模块的文档字符串,在交换模式下,可以用help(模块名) 查看




模块的属性:
__name__ 属性:
作用:
  1. 用来记录模块自身的名字
  2. 用来判断是否为主模块
说明:
  对于被导入的模块,模块名为去掉"路径前缀"和".py"后缀的文件名
  对于被执行的主模块,模块名为'__main__'




__doc__ 属性:
  用来记录文档字符串


__file__属性
  用来记录模块的所在文件路径




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







模块的隐藏属性
  模块中以下划线'_' 开头,不以双下划线'__'结尾的变量,在from xxx import *语句导入时,将不被导入
  通常称这些变量为隐藏属性





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


         compile        execute
           编译          解释执行
  mymod.py  --> mymod.pyc  --> python3




包 package (模块包)
  包是将模块以文件夹的形式组织在一起,进行分组管理的办法


包的作用:
  将一系列模块进行分类管理,有利于防止命名冲突
  可以在需要时加载一个或部分模块而不是全部模块



tree命令的安装
$ sudo apt install tree
$ tree 


包的导入语句:
同模块的导入规则
import 语句
  语法:
    import 包名 [as 包别名]
    import 包名.模块名 [as 模块新名]
    import 包名.子包名.模块名 [as 模块新名]
    ...
from import 语句
  语法:
    from 包名 import 模块名 [as 模块新名]
    from 包名.子包名 import 模块名 [as 模块新名]
    from 包名.子包名.模块名 import 属性名 [as 属性新名]
    ...
from import * 语句
  语法:
    from 包名 import *
    from 包名.模块名 import *
    ...




__init__.py  文件
  __init__.py 会在包加载时自动被调用


作用:
  1. 在内部填写文档字符串
  2. 在__init__.py内可以加载此包所依懒的一些模块



__init__.py 内的 __all__ 列表:


作用:
  用来记录此包中有哪儿些子包或模块需要在from xxx import *时被导入
说明:
  此列表只有在 from import * 语句时有效




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


  在from xxx import 语句中可以使用相对导入
  在from 和import 可以用相对路径
  . 代表当前目录
  .. 代表上一级目录
  ... 代表上二级止录
  .... 以此类推
  注意:
    相对导入时不能超出包的外部




包的加载路径:
  同模块的加载路径
  sys.path 添加包的搜索路径
  PYTHONPATH 






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值