zoukankan      html  css  js  c++  java
  • 模块1

    一、模块简介

    1. 什么是模块

      模块是一系列功能的集合体,也可以看成是一堆函数的集合体。

     

    1. 模块的四种形式

      • 自定义模块——自己写的py文件,并在文件内写入一堆函数

      • 第三方模块——已被编译为共享库或DLL的C或C++扩展,pip install

      • 内置模块——使用C编写并链接到python解释器的内置模块

      • 包——把一系列模块组织到一起的文件夹

     

    二、import和from…import

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

      • 以模块为准创造一个模块名称空间。

      • 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间。

      • 在当前执行文件中拿到一个模块名。

    2. Form…import…首次导入发生的三件事

      • 以模块为准创造一个模块的名称空间

      • 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间。

      • 在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用。

    3. 两种导入模块方式的异同

      • 相同点

        1. 两者都会执行模块对应的文件,两者都会产生模块的名称空间。

        2. 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关。

      • 不同点

        1. import需要加前缀;from…import…不需要加前缀,代码更精简

        2. From…import…容易与当前执行文件中名称空间中的名字冲突

     

    三、循环导入问题

    1. 问题,无论运行下述哪个文件,都会报错。

      • m1文件

    from m2 import b
        
    a = 'a'
      • m2文件

    from m1 import a
        
    b = 'b'
    1. 解决方法一

      • m1文件

    def func1():
        from m2 import b
    
    a = 'a'
      • m2文件

    def func2():
        from m1 import a
            
    b = 'b'
    1. 解决方法二

      • m1文件

    a = 'a'
    from m2 import b
      • m2文件

    b = 'b'
    from m1 import a

    四、模块的搜索路径

    • 如果模块的文件路径和执行文件不在同一个文件目录下,就会根据某个顺序在计算机中搜索模块。

    • 导入模块时查找顺序是:

      1. 从内存中已经导入的模块中找

      2. 内置模块

      3. 环境变量

     

    五、python文件的两种用途

    1. 脚本,一个文件就是整个程序,用来被执行。

    2. 模块,文件中存放一堆功能,用来被导入使用。

  • 相关阅读:
    1.Apache与Tomcat
    jeeplus 多选框
    GIT 回滚
    jsp 中data 转换 字符串
    Pattern和Matcher中表达式
    web.xml 详细介绍
    $.ajax()方法详解
    My 2016
    如何做好一个保安队长。
    集合之WeakHashMap
  • 原文地址:https://www.cnblogs.com/binyuanxiang/p/11608273.html
Copyright © 2011-2022 走看看