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'模块路径')
      
  • 相关阅读:
    sqlserver中临时表、row-number、update更新自己
    easyui 实现Tooltip
    easyui 添加dialog
    转载 50种方法优化SQL Server数据库查询
    用正则将空格给去掉
    java连接redis无法连接,报异常RedisConnectionException
    springcloud的Turbine配置监控多个服务的一些坑!!!!InstanceMonitor$MisconfiguredHostException,No message available","path":"/actuator/hystrix.stream,页面不显示服务或者一直loading
    CentOS7最小化安装之后无法联网以及无法使用ifconfig以及无法使用yum安装软件
    required_new spring事务传播行为无效碰到的坑!
    推荐一下牛逼的谷歌浏览器插件!!!非常好用
  • 原文地址:https://www.cnblogs.com/xiaohei-chen/p/11984632.html
Copyright © 2011-2022 走看看