模块1.0

时间:2019-09-26
本文章向大家介绍模块1.0,主要包括模块1.0使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

模块化

Python中只有一种模块对象类型

模块module,指的是Python源代码文件

包package,指的是模块组织在一起的包和包同名的目录及其相关文件

模块的四种形式

  1. 内置模块:Python解释器自带的模块
  2. pip安装的模块:pip install 模块名
  3. 自定义模块:自定义模块

导入语句

导入非顶级模块,只将其顶级模块名称加入到本地名词空间中.导入的模块必须使用完全限定名称来访问.

如果使用as ,as 后的名称直接绑定到导入的模块对象,并将该名称加入到本地名词空间中.

  • 找到from 子句中指定的模块,加载并初始化(不是导入)
  • 对于import子句后的名称
    • 先查from子句导入的模块是否具有该名称的属性
    • 如果内有,则尝试导入该名称子模块中的同名模块
    • 还没找到,抛出Import Error异常
    • 之歌名称保存到本地名词空间中,如果使用了as语句,则使用as子句后面的名称

自定义模块

  1. 模块名就是文件名

  2. 模块名必须符合标识符要求

  3. 不要使用系统模块名,避免冲突

  4. 通常模块名全小写,下划线分割

模块搜索顺序

从当前-->局部-->全局-->内置

  1. 程序主目录,程序运行的主程序脚本所在的目录

  2. PYTHONPATH目录,环境变量PYTHONPATH设置的目录也是搜索模块的路径

  3. 标准库目录,Pythoon自带的库模块所在的目录

模块运行

import time
#1. 开辟内存空间,内存空间命名为time
# 2. 把time.py中的所有代码读入名称空间,然后运行
# 3. 通过time.方法名使用time模块中的方法

优点:永不冲突

缺点:导入麻烦

from time import sleep
# 1. 开辟内存空间,内存空间命名为time
# 2. 把time.py中的所有代码读入名称空间,然后运行
# 3. 把sleep()读入import和from...import.py中,因此可以直接使用方法名
from time import * #表示导入time下所有方法

优点:调用省事

缺点:容易发生冲突

if __name__ == '__main__':

上语句常用于模块中功能检测,

其中,当运行文件为当前文件时,__name__参数默认值为__main__;当调用运行文件外的模块时,__name__参数默值为模块名(默认就意味着可以更改,但是没必要)

  1. 此功能为模块测试功能:测试本模块内部的函数,类
  2. 避免主模块变更的副作用:顶层代码,没有封装,主模块使用没有问题.一旦有了新的主模块,当前模块要被导入,由于源代码没有封装,一并执行

原文地址:https://www.cnblogs.com/agsol/p/11594545.html