zoukankan      html  css  js  c++  java
  • Python 模块 I (自定义)

    1.内容大纲

    1. 模块的定义与分类
    2. import
    3. from ... import ...
    4. from ... import *
    5. py文件的两个功能
    6. 模块的搜索路径

    2.具体内容

    1. 模块的定义与分类

      1. 什么是模块

        • 一个模块就是一个py文件,这个模块存储很多相似的功能
      2. 模块的分类

        • 内置模块,标准库,python解释器自带的,time,os,sys等等200多种
        • 第三方库(模块)通过pip install 安装,6000多种
        • 自定义模块,自己写的模块
      3. 模块的运行方式(py文件)

        • 脚本方式:直接用解释器执行
        • 模块方式:被其他的模块倒入,为导入他的模块提供资源
      4. __name__属性的使用

        • 在脚本方式运行时,__name__是固定的字符串:__main__
        • 在以模块导入时,__name__就是本模块的名字
        • 在自定义模块中对__name__进行判断,决定是否执行可执行语句,开发阶段就执行,使用阶段就不执行
        if __name__ == '__main__':
          (要执行的函数)
        
    2. import

      1. 当引用模块的时候,实际上将该模块执行了一遍,加载到内存(只有在第一次引用的时侯,才将此模块加载到内存)

      2. 第一次导入模块发生的三件事

        • 将导入的模块(如:tb)加载到内存
        • 在内存中创建以tb命名的名称空间
        • 通过(tb.)的方式引用此模块的名字(变量,函数名,类名)
      3. 被导入模块有独立的名称空间

        • (坑)通过tb.的方式引用此模块的名字,一定是从此模块中寻找的
      4. 为模块起别名

        import contextlib as cb
        
      5. 导入多个模块

        import time,os,sys #不推荐
        import time
        import os
        import sys 
        
    3. from ... import ...

      from tb import name
      #相当于从tb模块的全局空间中将name,变量与值的对应关系复制到了当前执行文#件的全局名称空间中
      
      1. 优点:使用方便
      2. 缺点:容易产生覆盖效果
      3. 导入多个名字(同import)
      4. 起别名(同import)
    4. from ... import * (控制成员被导入)

      1. from tb import *

        • 将tb模块的所有名字复制过来
        • 容易覆盖
      2. __all__配合使用

        • __all__是一个列表,用于表示本模块可以被外届使用的成员,元素是成员名放入字符串
        • __all__只对from xxx import * 这种导入生效
        __all__ = ['name', 'read1', 'read2']#被引用模块开头
        
        
    5. import xxx 与from xxx import *的区别

      1. import在使用其中成员时,必须使用模块名作为前缀;不容易产生冲突

      2. from... 在使用其中成员时,不用使用模块名作为前缀,直接使用成员名即可;但容易产生命名冲突。后面定义的同名成员把前面的覆盖了

      3. 解决名称冲突的问题

        • 改用import这种方式
        • 自己避免使用同名
        • 使用别名解决冲突
    6. 模块的搜索路径

      1. 寻找模块的路径:内存 --> 内置函数 --> sys.path
      2. 引用在,内存、 内置模块 、sys.path中无法找到的模块
      import sys
      sys.path.append(r'模块路径')
      
  • 相关阅读:
    UI界面思想
    ARM汇编语言(3)(寄存器读写控制外设)
    ARM汇编(2)(指令)
    ARM汇编语言(1)(基本概念)
    QT软件初次使用中遇到的若干问题及思考
    webpack4打包html中img后src为“[object Module]”问题(已解决)
    gulp dev报错:ReferenceError:primordials is not defined(已解决)
    Ubuntu20.04安装yarn报错gpg: can't connect to the agent: IPC connect call failed(已解决)
    手摸手教程之ubuntu20.04更改国内镜像源(附其他版本ubuntu换源教程,最新详细教程)
    Alert提示框的vue组件编写
  • 原文地址:https://www.cnblogs.com/xiaohei-chen/p/11984632.html
Copyright © 2011-2022 走看看