python模块(二)

一. 路径问题

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

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

2. 如何让程序找到自定义的模块:

  • 使用安装的方法:将模块放到sys.path的任意一个路径下;
  • 扩展sys.path的路径:
          >>>import sys
          >>>sys.path.append('path of module')

 二. 模块的导入和执行过程

1. 模块的加载

  • 加载过程
  1. 在模块导入时,模块所有语句会执行;
  2. 如果一个模块已经被导入,则再次导入时不会重新执行模块内的语句
  • 重新加载

    >>>import mymod
    >>>import imp
    >>>imp.reload(mymod)  # 在运行时重新加载mymod模块

2. 模块被导入和执行的过程

  • 搜索相关路径找到模块(.py文件);
  • 判断是否有此模块对应的.pyc文件;
  • 如果.pyc文件比.py文件新,则直接加载.pyc文件,否则用模块.py文件生成.pyc并加载执行;
  • 备注:
  1. pyc模块的编译:.py ----编译---->.pyc----解释执行---->python3;
  2. 文件的时间戳很重要,由时间戳决定文件是否需要编译;
  3. 编译后的.pyc文件给到的还是python3解释执行器,而C语言编译后的.exe文件直接交给CPU执行;
  4. pyc文件是python3的一个缓存文件,存储的是字节编码,为了提高程序的加载速度和执行速度。

三. 模块的属性

1. 模块的隐藏属性

    模块中以'_'开头的属性,在from xxx import *导入时将不被导入,通常这些属性称为隐藏属性,示例如下:

mymod5.py code:

运行结果:

2. 模块的__all__属性

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

mymod4.py code:

运行结果:

3. 模块的其它属性

  •  __doc__属性:绑定模块的文档字符串,模块内第一个没有赋值给任何变量的字符串为文档字符串;
  • __file__属性:绑定模块对应的文件路径;
  • __name__属性:记录模块的名称,常用来判断是否为主模块:
  1. 当此模块为主模块(也就是第一个运行的模块)运行时,__name__绑定'__main__';
  2. 当此模块不是主模块时,__name__绑定模块名(文件名去掉.py后缀)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值