zoukankan      html  css  js  c++  java
  • Python Day17

    ## 跨文件导入模块
    
    ```python
    如果a文件夹所在目录在环境变量中,a文件夹中的ma模块可以被一下方式导入:
    import a.ma   |form a import ma
    如果a文件夹所在目录在环境变量,a文件中的b文件夹的mb模块可以被以下方式导入:
        import a.b.mb  |form a.b import mb
    如果a文件夹所在目录在环境变量,a文件夹中的b文件夹mb模块中的bbb名字要被直接导入:
        import a.b.mb.bbb#错误!导入模块中所有.左侧都必须是文件夹
        from a.b import mb.bbb#错误同上!!!
        from a.b.mb import bbb #正确!
    ```
    
    ## 模块的两种被执行方式:
    
    ```pyrthon
    1,一个py文件作为自执行文件,__name__变量值为"__main__"字符串
    2,一个py文件作为模块被导入执行,__name__变量值为"模块名"
    在这样的文件中可以通过这样的语句进行区别两种执行方式:
        if __name__=="__main__":
          自执行的逻辑代码(被作为模块导入执行时if为假,无法执行次语句)
    ```
    
    包:
    
    ```python
    一系列模块的集合,用文件夹来管理一系列有联系功能的模块,该文件夹称之为包!,文件名就是包名。
    包与普通文件夹存在区别:包的文件夹中一定存在一个__init__.py文件
        py2中:必须创建,py3中建议创建,不创建系统会自动创建,系统自动创        建的不具备具体的模块的管理功能。只是最基本文件管理功能。
    __init__.py文件:
        1,产生一个全局名称空间,代表的就是包的名称空间。
        2,管理 包可以直接点.出来使用的名字(模块名或模块中具体对象名)
    导包完成的三件事:
        1,编译__init__.py文件形成pyc文件
        2,执行__init__.py文件,形成一个全局名称空间,将__init__.py文件中所有的名字存放其中,该名称空间就代表包的名称空间。
        3,在导包的文件中,产生一个与包名字相同的名字,指向包的名称空间(即__init__.py文件的全局名称空间)
    ```
    
    ## 直接使用包中模块
    
    ```python
    如果只想作为普通文件夹,py3中可以省略__init__文件,本质上文件夹也是包。因为系统会自动产生。py2中不会自动产生,需要自建。
    作为普通文件夹,导入包中模块方法:就是上述通过绝对路径导入
        import a.b.c#a、b,是文件夹名,c是模块名。
        from a.b.c import ccc#...同上...ccc是模块中的具体变量名
    ```
    
    
    
    ## 包的管理:
    
    ```python
    #在包中采用相对路径导入管理的模块或模块中的名字
    
    在包的__init__.py文件或包中任意一个模块中
        .代表当前文件所在目录
        ..代表当前文件所在目录的上一层目录
    #注:语法不能出包,以为包外的文件都能自执行,但拥有.开头导入的文件不能自执行
    ```
  • 相关阅读:
    [bzoj1039] [ZJOI2008]无序运动Movement
    [bzoj1037] [ZJOI2008]生日聚会Party
    [bzoj1034] [ZJOI2008]泡泡堂BNB
    wing IDE
    用css解决table文字溢出控制td显示字数
    表格Table宽度设置无效的解决方法
    mysql获取某个表的所有字段名
    Python 各种编码相互转化 (目前只有Unicode utf-8)
    Python dict转化为string方法
    前端传给后端的数据类型为ImmutableMultiDict 咋办
  • 原文地址:https://www.cnblogs.com/huhongpeng/p/10922642.html
Copyright © 2011-2022 走看看