欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

四、模块与包&常用模块

程序员文章站 2023-10-15 14:11:35
一、模块的使用 模块定义:一系列功能的集合体 分为三大类:1.自定义模块 2.内置模块(比如 time,os,sys) 3.第三方模块 模块的表现形式: 1.使用python编写的py文件 2.已被编译为共享库或DLL的C或C++扩展 3.把一系列模块组织到一起的文件夹(ps:文件夹下有一个__in ......

一、模块的使用

模块定义:一系列功能的集合体

  分为三大类:1.自定义模块

        2.内置模块(比如 time,os,sys)

        3.第三方模块

模块的表现形式

  1.使用python编写的py文件

  2.已被编译为共享库或dll的c或c++扩展

  3.把一系列模块组织到一起的文件夹(ps:文件夹下有一个__init__.py文件,该文件夹称为包)

  4.使用c编写并链接到python解释器的内置模块

为什么要用模块:

  1.可以拿来内置、第三方的模块,然后直接使用,这种拿来就用的方式,会极大的提升开发效率

  2.将程序*用的一些功能组织到一个文件中,然后程序各部分组件可以重用该文件中的功能。

    优点是 减少代码冗余,增强程序的组织结构性与可维护性

怎么用模块:

  一个py文件就是一个模块,如果文件名为modules.py,模块名则为modules

  ps:模块的使用必须搞清楚谁是执行文件,谁是被导入的模块

1、模块的使用之import

四、模块与包&常用模块modules.py
四、模块与包&常用模块run.py

执行文件:run.py      被导入模块是:modules.py

首次导入模块会发生三件事: 

  1、创建一个模块modules.py的名称空间
  2、执行模块对应的文件modules.py,将产生的名字丢到模块的名称空间中
  3、在当前执行文件的名称空间中拿到一个名字modules,该名字就是指向模块modules.py的名称空间的
  import modules# modules=modules.py名称空间的内存地址

ps

  在当前执行文件中引用模块中的名字语法为:modules.名字,必须加上modules.作为前缀
  modules.名字相当于指名道姓地跟某一个名称空间要名字,根本不会与当前执行文件的名字冲突

 

2、模块的使用之  from   import

四、模块与包&常用模块spam.py
四、模块与包&常用模块run.py

执行文件:run.py      被导入模块: spam.py

首次导入模块会发生三件事
  1、创建一个模块spam.py的名称空间
  2、执行模块对应的文件spam.py,将产生的名字丢到模块的名称空间中
  3、在当前执行文件的名称空间中拿到一个名字money,该名字就是指向模块spam.py的名称空间的那个money
  from spam import money,read1,read2,change

两种导入方式的对比
相同点:函数的作用域关系在定义阶段就规定死了,与调用位置无关

from import
优点:可以不用加前缀而直接引用名字,更简洁
缺点:容易与当前执行文件中的名字冲突

import
优点:指名道姓跟某一个名称空间要名字,肯定不会与当前名称空间中的名字冲突
缺点:必须加上前缀

 

3、循环导入的问题

四、模块与包&常用模块m1.py
四、模块与包&常用模块m2.py
###   run.py
# 1、创建m1.py的名称空间
# 2、执行m1.py的代码,将产生的名字丢到m1.py的名称空间中
# 3、在当前执行文件的名称空间中拿到一个名字m1
import m1

m1.f1()

 

4、模块的搜索路径

模块搜索路径优先级:

  内存  --------> 内置的模块 --------> sys.path(环境变量)

 

5、区分python文件的两种用途

一个python文件有两种用途:
  1、可以执行运行:__name__ == '__main__'
  2、可以被当做模块导入:__name__ == '模块名'

if __name__ == '__main__':