Python模块

模块

是一个命名空间,也是一个模块对象
含义:模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。(模块就是程序)
作用:

  1. 封装代码
  2. 实现代码的重用
补充:
  • 容器 ->数据的封装
  • 函数 ->语句的封装
  • 类 ->方法和属性的封装
语法:
  • import 语句(隐性运算)
    含义:导入整个模块,包括声称一个以模块名命名的命名空间
    想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:
    import module1[, module2[,… moduleN]
    使用模块中的函数名时,使用格式为module1.函数
  • from … import 语句
    含义:只导入指定模块的部分属性到当前的命名空间
    from modname import name1[, name2[, … nameN]]
    这个声明不会把整个模块(from后的模块)导入到当前的命名空间中,它只会将import后的函数引入进来。(可直接使用,不需要在用)
  • from … import * 语句
    含义:把一个模块的所有内容全都导入到当前的命名空间也是可行的,
    from modname import *
    但是那些由单一下划线(_)开头的名字不在此例。大多数情况, Python程序员不使用这种方法,因为引入的其它来源的命名,很可能覆盖了已有的定义。(不建议使用)
  • Import … as…
    导入一个模块(命名空间),并且给这个命名空间起一个别名
    注意:使用了as后,只能使用别名,不能使用原始名称
Import和from的区别
注意:
  • import将整个模块对象赋值给一个变量名
  • from将一个或多个变量名赋值给导入此模块的模块中的同名对象(若当前命名空间已经有了一个相同数属性,from之后被覆盖)
Import语句导入指定的模块时,系统执行的步骤:
  • 找到模块文件
    在指定路径下搜索模块文件
  • 编译成字节码
    文件导入时就会编译,因此,顶层文件的pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件(pyc文件就是.py文件编译后的文件)
  • 执行模块的代码来创建其所定义的对象
    模块文件中的所有语句会依次执行,从头到尾,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件属性
注意:
  • 模块只有在第一次导入时才会执行如上步骤
  • 后续导入操作只不过是提取内存中已加载的模块对象
  • reload()可用于重新加载模块

深入模块

模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。这些代码只有在第一次被导入时才会被执行。
每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用。
__name__属性

  • 系统工作流程:一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,被引入的模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。(是在被引用的模块进行判断, name__是否等于__main(在被引入的模块中加入__name__ == “nain”的判断)
    if __name__ == "__main__":
        print(“主程序”)
    else:
        print(“不是主程序”)
    
    注意:在引入某模块时候,是先将被引入的模块的代码执行一遍,在从主程序上进行顺序执行。
  • 搜索路径:
    含义:在程序导入模块的时候,系统会到默认路径中去搜索,找到了就导入,找不到就报错。
    以下代码显示系统的搜索路径:
    import sys
    print(sys.path)
    

实行结果:
[‘E:\project’, ‘E:\project’, ‘E:\project\venv\Scripts\python36.zip’, ‘E:\Anaconda3\DLLs’, ‘E:\Anaconda3\lib’, ‘E:\Anaconda3’, ‘E:\project\venv’, ‘E:\project\venv\lib\site-packages’, ‘E:\project\venv\lib\site-packages\setuptools-39.1.0-py3.6.egg’, ‘E:\project\venv\lib\site-packages\pip-10.0.1-py3.6.egg’, ‘D:\PyCharm 018.1.4\helpers\pycharm_matplotlib_backend’]

  • 将要导入的模块的路径添加到系统的搜索路径中(一般将模块导入到site-packages文件夹中 ):
    sys.path.append("路径")
    
包(package)

含义:包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的Python应用程序执行环境
包的创建流程:

  1. 创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字
  2. 在文件夹中创建_init_.py的模块文件,内容可以为空(必须创建,用来告诉python,把这个文件夹当作一个包)
  3. 将相关的模块放入文件夹中
    在程序中导入包:
    Import 包名.模块名
    

补充:init.py的模块文件通常为空,仅用于扮演包初始化的挂钩,替目录产生模块命名空间以及使用目录导入时实现from * 行为的角色

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值