34.4-包

作者: BeautifulSoulpy | 来源:发表于2020-01-10 08:44 被阅读0次

    做心灵的主人,努力把心态调整好,不必要挑剔生活的不如意,得是一种短暂,失是一种境界。

    总结:

    1. 看清楚你当前是处在哪个环境里;global,dir\locals很重要;

    包,特殊的模块;包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。
    Python模块支持目录吗?

    是一个包含_init.py 文件的目录,该目录下一定得有这个_init.py文件和其它模块或子包。
    子包: 假如子目录中也有 init.py 那么它就是这个包的子包了

    实验:项目中新建一个目录m,使用下面的代码;

    import m
    print(m)
    print(type(m))
    print(dir(m)) # 没有__file__
    

    竟然可以导入目录m,目录也是文件,所以可以导入,不过问题是,目录模块怎么写入代码?
    为了解决这个问题,Python要求在目录下建立一个特殊文件 _init_.py ,在其中写入代码;

    Python中,目录可以作为模块,这就是包,不过代码需要写在该目录下 init.py 中;

    子模块

    包目录下的py文件、子目录都是其子模块;

    m
    |-- __init__.py
    |-- m1.py
    |-- m2
      |-- __init__.py
      |-- m21
        |-- __init__.py
      |-- m22.py
    

    如上建立子模块目录和文件,所有的py文件中就写一句话 print(name)

    # 注意观察已经加载的模块、当前名词空间的名词
    #import m
    #import m.m1
    #from m import m1
    #from m.m2 import m21
    import m.m2.m21
    print('-'*30)
    print(dir())
    print('-'*30)
    import sys
    print(sorted(filter(lambda x:x.startswith('m'), sys.modules.keys())))
    

    删除 init.py 试一试,可以发现删除并不影响导入,但是这不是良好的习惯,请保留 init.py 文件

    模块和包的总结

    包能够更好的组织模块,尤其是大的模块,其代码行数很多,可以把它拆分成很多子模块,便于使用某些功能就加载相应的子模块!

    相关文章

      网友评论

          本文标题:34.4-包

          本文链接:https://www.haomeiwen.com/subject/obnooctx.html