zoukankan      html  css  js  c++  java
  • day16

    今日所学:

    复习

    -- 一系列功能的集合体,用文件来管理一系列有联系的功能,该文件我们称之为模块,文件名就是模块名
     -- import | from...import 来导入模块,从而使用模块中的功能
     -- py文件 | 管理py文件的包 | c编译的内置模块 | c、C++通过的DLL拓展
     -- 内置模块 | 自定义模块
     

    2.导入模块完成的三件事
    1)编译产生模块对应的pyc文件
    2)执行模块中的代码,形成模块的全局名称空间,将模块中的名字存放在该模块的全局名称空间中
    3)在到模块的文件中,形成一个与模块名同名的名字,指向模块的全局名称空间
     
    3.起别名:原名失效
    4.自定义模块:系统 | 第三方 | 自己
     
    5.加载顺序:内存 -> 内置 -> sys.path
     -- 所有能被导入的模块,一定在sys.path存放的路径中可以找到
    6.环境变量sys.path:存放路径的list,可以任意操作,但默认第一个成员一定是当前执行文件所有的目录
    7.from...import a as m_a, b as m_b  | from...import *  (__all__ = ['a', 'b'])
    8.import | from...import 采用的是依赖sys.path的绝对导入

    1.导模块的细节
    2.包的概念与使用
    3.包中的相对导入语法
    夸文件夹导入模块
     1.如果a文件夹所在目录在环境变量,a文件夹中的ma模块可以被以下方式导入
    import a.ma  |  from a import ma
     2.如果a文件夹所在目录在环境变量,a文件夹中的b文件夹的mb模块可以被以下方式导入
    import a.b.mb  |  from a.b import mb
    3.如果a文件夹所在目录在环境变量,a文件夹中的b文件夹的mb模块中的bbb名字要被直接导入
    import a.b.mb.bbb  # 错误:所有.左侧必须是文件夹 *****
    from a.b import mb.bbb # 错误:所有.左侧必须是文件夹
    from a.b.mb import bbb # 正确
    模块的两种被执行方式
     1.一个py文件作为自执行文件,__name__变量的值为 '__main__'
    2.一个py文件作为模块被导入执行,__name__变量的值为 '文件(模块)名'
     如何区别两种方式,可以让一个文件可以自执行,也可以被导入执行 共存
    在这样的py文件中写:
    if __name__ == '__main__':
        自执行的逻辑 => 因为在文件作为模块使用时 __name__为文件名,不满足条件
        pass
    包:一系列模块的集合体,用文件夹来管理一系列有联系功能的模块,该文件夹我们称之为包,文件夹名就是包名

    包 与 普通文件夹存在区别:包的文件夹中一定存在一个__init__.py文件
      -- py2:必须创建  py3:建议创建,不创建系统会自动创建

    __init__.py文件
    1)产生一个全局名称空间,提供给包的,就代表包的名称空间
    2)管理 包可以直接点出来使用的 名字

    导包完成的三件事
    1)编译形成包中__init__.py文件的pyc文件
    2)执行__init__.py文件,形成一个全局名称空间,将__init__.py文件中所有名字存放其中,该名称空间就代表包的名称空间
    3)在导包的文件中,产生一个与包名相同的名字,指向包的名称空间(__init__.py文件的全局名称空间)
    包的管理
     在包中采用相对导入管理模块或模块中的名字

     在包的__init__.py文件或是包中任意一个模块中
    . 代表当前文件所在目录
     .. 代表当前文件所在目录的上一级目录
     注:.语法不能出包,因为包外的文件都能自执行,但拥有.开头导入的文件不能自执行
     
  • 相关阅读:
    mac c++编译出现segmentation fault :11错误
    ssh 连接缓慢解决方法
    237. Delete Node in a Linked List
    203. Remove Linked List Elements
    Inversion of Control Containers and the Dependency Injection pattern
    82. Remove Duplicates from Sorted List II
    83. Remove Duplicates from Sorted List
    SxsTrace
    使用CCleaner卸载chrome
    decimal and double ToString problem
  • 原文地址:https://www.cnblogs.com/Fzhiyuan/p/10821596.html
Copyright © 2011-2022 走看看