zoukankan      html  css  js  c++  java
  • 包的基础使用

    一、什么是包

    包就是一个包含有__init__.py文件,我们在创建包的目的就是为了用文件夹将文件/模块组织起来

    创建包的目的不是为了运行,而是被导入使用。包只是模块的一种形式而已,包的本质就是模块

    二、为什么使用包

    包的本质就是一个文件夹,我们需要用文件夹将模块文件组织起来,以此来提高程序的结构性和维护性

    三、包的导入语句

    import

    from...import...

    1、无论是哪种,必须遵循一个原则,凡是在导入带点的,点的左边都必须是一个包,否则非法。可以带有一连串的点。在导入后,使用就没有这个限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)

    2、import导入文件时,产生名称空间中的名字来源于文件,import包,产生的名称空间的名字也来源于文件,即包下的__init__.py  导入包本质就是在导入该文件

    3、包A和包B下有同名模块也不会冲突,如A.a与B.b来自两个命名空间

    四、包的使用 from...import...

    from之后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,比如:from a import b.c就是语法错误

    五、绝对导入与相对导入

    我们最顶级包glance是写给别人去用的,然后在glance包内部也会有彼此之间相互导入的需求,这时候就有绝对导入和相对导入两种方式

      绝对导入:以glance作为起始

      相对导入:用 . 或者 .. 的方式作为起始(只能在一个包中使用,不能用于不同目录)

    六、包以及包所包含的模块都是用来被导入的,而不是被直接执行的,但是环境变量都是以执行文件为准

    总结:相对导入和绝对导入

      相对导入:

        优点:执行文件与被导入的模块都可以使用

        缺点:所有导入的都是以sys.path为起始点,导入比较麻烦

      绝对导入:

        符号: . 代表当前所在文件的文件夹,..代表上一级文件夹,...代表上一级的上一级文件夹

        优点:导入更简单

        缺点:只能在导入包中的模块时才能使用

    注意:
     1. 相对导入只能用于包内部模块之间的相互导入,导入者与被导入者都必须存在于一个包内
     2. attempted relative import beyond top-level package # 试图在顶级包之外使用相对导入是错误的,
       言外之意,必须在顶级包内使用相对导入,每增加一个.代表跳到上一级文件夹,而上一级不应该超出顶级包
  • 相关阅读:
    第38章 刷新令牌
    第37章 资源所有者密码验证(Resource Owner Password Validation)
    第36章 扩展授权
    第35章 秘密(secrets)
    第34章 授予类型
    node.js+ react + redux 环境搭建
    资源整理
    django form 组件插件
    django cookies与session
    django 初始命令
  • 原文地址:https://www.cnblogs.com/zhangzhechun/p/10300881.html
Copyright © 2011-2022 走看看