zoukankan      html  css  js  c++  java
  • 模块介绍

    常见的场景:一个模块就是一个包含了一组功能的python文件,比如spam.py,文件名为spam,可以通过import spam使用

    模块分类:(四个通用类别)

    1、使用python编写的.py文件

    2、已被编译为共享库或DLL的C或C++扩展

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

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

    为什么要使用模块

    1、从文件级别组织程序,更方便管理

    2、可以下载导入别人写好的模块,提升开发效率

    模块之import

    1、import的使用

    模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,他们只在模块名第一次遇到导入import语句时才执行(第一次导入 import模块名就加载到内存中了,后续的import语句只是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句)

    如:

    import spam
    import spam
    import spam

    '''
    执行结果:
    from the spam.py
    '''

    2、在第一次导入模块时会做三件事,重复导入会直接引用内存中已经加载好的结果

      (1)、为源文件(spam模块)创建新的名称空间,在spam中定义的函数和方法若是使用到了global时访问的就是这个名称空间

      (2)、在新创建的命名空间中执行模块中包含的代码,见初始导入import spam     

    提示:导入模块时到底执行了什么?
        In fact function definitions are also ‘statements’ that are 
        ‘executed’; the execution of a module-level function definition 
        enters the function name in the module’s global symbol table.
        事实上函数定义也是“被执行”的语句,模块级别函数定义的执行将函数名放
        入模块全局名称空间表,用globals()可以查看

      (3)、创建名字spam来引用该命名空间

    3、被导入模块有独立的名称空间

      每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,这样我们在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会被导入时,与使用者的全局变量冲突

    4、为模块起别名

      为已经导入的模块起别名的方式对编写可扩展的代码很有用

    5、在一行导入多个模块

  • 相关阅读:
    盛最多水的容器
    寻找2个有序数组的中位数
    从链表中删除总和值为0的连续节点
    链表中的下一个更大节点
    链表的中间节点
    循环有序链表的插入
    设计链表
    链表组件
    扁平化多级双向链表
    将二叉搜索数转化为排序的双向链表
  • 原文地址:https://www.cnblogs.com/zhangzhechun/p/10288658.html
Copyright © 2011-2022 走看看