🍖模块介绍

一.模块介绍

1.什么是模块

  • 模块就是一系列功能的集合体

2.模块的四种通用类别

  • 使用 Python 写的 .py 文件, 例 : 文件名 test.py, 模块名为 test
  • 盛放有多个 py 文件的文件夹也是一个功能的集合体, 至关于一种超级模块, 称之为
  • 已被编译为共享库或DLL的C或C++扩展
  • 使用 C 编写并连接到 Python 解释器的内置模块

3.模块的三种来源

  • 自带的模块

    1. 内置模块
    2. 标准库
  • 第三方模块

    • 能够经过 pip 工具下载的别人写的一些优秀的模块
    • 例 : pip3 install requests
  • 自定义模块

4.为什么要使用模块

  • 使用自带或第三方模块 : 写好的功能拿来就用, 提高开发效率
  • 使用自定义模块 : 减小代码冗余, 让程序的组织结构更清晰

3.模块导入示例

  • 如下讲解都以此示例
⛅"spam.py" 文件
print("i am spam")  # 只要执行此文件就会打印 "i am spam"

x = 1000
def aaa():
    print("i am spam.aaa")

def bbb():
    print("i am spam.bbb")
    aaa()

def change():
    global x
    x = 0

⛅"run.py" 执行文件
import spam   # 导入模块先执行一次被导入模块文件, 会打印 "i am spam"
import spam   # 以后的导入都是直接引用第一次导入的结果, 不会重复执行文件
import spam

x = 2000      # 当前执行文件下的变量 "x"
spam.aaa()    # 使用模块的 "aaa" 功能, 打印 "i am spam.aaa"
spam.bbb()    # 使用模块的 "bbb" 功能, 打印 "i am spam.bbb" 并调用模块的 "aaa" 打印 "i am spam.aaa"
spam.change() # 使用了模块的 "change" 功能,改变的是定义阶段就规定好了的去 "spam" 名称空间找变量名 "x"
print(x)      # 因此这里打印的仍是 "run.py" 的 "x" : 2000
print(spam.x) # 而 "spam.py" 里面的 "x" : 0

二.模块使用之 import

1.首次导入模块发生的三件事

  • 建立一个模块的名称空间
  • 执行模块对应文件, 将执行文件产生的名字存放于这个名称空间中
  • 在当前执行文件中拿到一个模块名, 该模块名指向被导入模块的名称空间

模块导入

2.import 的使用

  • 强调 : 只有首次导入才会执行被导入模块文件, 并建立一个名称空间
  • 以后的导入都是直接引用首次导入的结果
  • 模块中功能的执行始终以模块本身的名称空间为准
import spam
import spam
import spam
import spam
import spam

print(spam)  # <module 'spam' from 'F:\\Pycharm File\\spam.py'>
spam.aaa()

3.import 的优缺点

  • 优势 : 知名道姓的引用某个模块的名字, 不会有冲突
  • 缺点 : 须要加前缀, 引用次数多的时候就比较麻烦

4.为模块起别名

  • 名字比较长的状况下
import spam as ss
import songhaixing as shawn

5.导入多个模块

⛅不推荐使用
import os, sys, time

⛅推荐使用(清晰明了)
import os
import sys
import time

⛅导入模块规范
1. Python内置模块
2. 第三方模块
3. 自定义模块

import os
import sys
import 第三方
import spam

三.模块使用之 from...import...

1.首次导入模块发生三件事

  • 建立一个模块的名称空间
  • 执行对应文件, 将产生的名字存放于刚建立的名称空间中 (前两个步骤与 import 同样)
  • 在当前名称空间中拿到模块中的名字, 能够直接使用, 不用加任何前缀

2.from...import 的使用

  • import同样,执行模块中的功能,始终以模块的名称空间为准
from spam import aaa, bbb, change

print(aaa)
aaa()
bbb()       #能够直接调用
change()    #不须要调用名字

3.from...import 的优缺点

  • 优势 : 不用加前缀, 直接引用模块中的名字, 代码更精简
  • 缺点 : 容易与当前执行文件名称空间中的重复名字发生冲突

4.为模块取别名

from spam import change as ch

print(ch)
ch()

5.导入多个模块功能

from...improt *  # "*" 表明全部

from spam import *

aaa()
bbb()
change()
  • 可使用 __all__ 功能规定只能使用的模块
⛅好比在 "spam.py" 文件中加入
__all__=["aaa","change"]

⛅那么在另外一个文件中导入这个文件就只能使用这两个规定的名字

梦里有我闻过的花香 也有我与你初遇的地方

相关文章
相关标签/搜索