1.包的概述

1.包是将模块一文件夹的组织形式进行分组管理的方法,一系列模块进行分类管理有利于防止命名冲突

2.包是一个包含多个模块的特色目录,目录下有一个特色的文件__init__.py

3.包的命名规则和变量命名规则一样由字母数字和下划线且不以数字开头组成,推荐使用小写字母加_的命名方式

4.使用import包名可以一次导入包中的所有模块,也可以在需要时加载一个或部分模块而不是全部模块

5.在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表,即在__init__.py文件中写入import导入语句

2.包的导入语法

1.如果是直接导入一个包,那么相当于执行了这个包中的__init__文件

2.Python解释器并不会帮你把这个包下面的其他包以及py文件自动的导入到内存

3.如果希望直接导入包之后,所有的这个包下面的其他包以及py文件都能直接通过包来引用,那么要处理__init__文件

import 包名  # 相当于执行了包下面的__init__文件
import 包名 as 包别名
import 包名.模块名 as 模块新名
import 包名.子包名.模块名 as 模块新名
from 包名 import 模块名 as 模块新名
from 包名.子包名 import 模块名 as 模块新名
from 包名.子包名.模块名 import 属性名 as 属性新名
from 包名 import *
from 包名.模块名 import *

3.包目录下的__init__.py文件

__init__.py会在导入包时被自动调用,是常规包内必须存在的文件

__init__.py文件可以编写此包的内容,可以在内部添加包的文档字符串,可以加载此包所依懒的其它模块

4.包的__all__列表

1.用来记录此包中有哪儿些子包或模块需要导入,当用from 包名 import * 语句导入时,只查找__all__中的模块或子包

2.__all__列表只在from 包名 import *语句时起作用;当子包或子包内的模块被导入时,上一层的包也会被先导入

# 实质会先导入mypack,再导入games,再导入contra
import mypack.games.contra

5.包的相对导入

1.概述:
        1.包的相对导入是指包内的模块的相互导入,导入时不能超出包的外部,要避免循环导入

        2.相对导入路径:

            在 from xxx import 语句中, xxx部分可以使用相对路径

            . 代表当前目录

            .. 代表上一级目录

            ... 代表上二级目录

            .... 以此类推

2.语法:

        from 相对路径包或模块 import 属性或模块名

        from 相对路径包或模块 import *

16_Python的包package的更多相关文章

  1. (转)-编写第一个ROS(创建工作空间workspace和功能包package)

    原文网址:http://www.cnblogs.com/liuamin/p/5704281.html 刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配 ...

  2. 编写第一个ROS(创建工作空间workspace和功能包package)

    刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配置好ROS. 1.创建工作空间(workspace) 我们所创建功能包package,应该全部放到一个 ...

  3. Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt262 以下都是log4j.properties要写入的内容: 一:参数介绍: ...

  4. 模块(modue)和包(package)的概念-import导入模块

    模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较 ...

  5. Java - 25 Java 包(package)

    Java 包(package) 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包 ...

  6. Java学习笔记三十一:Java 包(package)

    Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...

  7. ROS知识(3)----功能包package编译的两种方式

    ROS的包编译有两种方法(我知道的),一种是用rosmake,这种方法简单:另一种是用catkin_make,这种方法更方便包的管理和开发.这两种方法都是先建立工作空间workspace(类似于vs下 ...

  8. Python(模块(modue)、包(package))

    ''' 一 模块 模块一共三种: python标准库 第三方模块 应用程序自定义模块 模块两种执行方式: 1 用于启动执行 2 用于被调用执行 key:import module: 将执行文件(mod ...

  9. IntelliJ IDEA 识别一个类所属的jar包package

    IntelliJ IDEA 识别一个类所属的jar包package 按住ctrl,鼠标移动上去,不要点击: 有木有快捷键? ctrl+alt+B直接就过去了:需要再跳回来:

随机推荐

  1. 8 Java 条件逻辑语句

    生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,在上学的时候,如果期末考试成绩在全校能拿到前100名,则奖励一个 iPhone 11 .对于这种“需要先判断条件,条件满足后才执行的情况 ...

  2. react 样式冲突解决方案 styled-components

    前置 在 react 中解决组件样式冲突的方案中,如果您喜欢将 css 与 js 分离,可能更习惯于 CSS-Modules:如果习惯了 Vue.js 那样的单文件组件,可能习惯于使用 styled- ...

  3. Java 基础 —— 注解 Annotation

    简介 Annotation 是从 JDK 5.0 引入的. 注解使得我们可以以编译器验证的格式存储程序的额外信息.注解可以生成描述符文件,甚至是新的类定义,并且有助于减轻编写"样板" ...

  4. 算法学习笔记:最近公共祖先(LCA问题)

    当我们处理树上点与点关系的问题时(例如,最简单的,树上两点的距离),常常需要获知树上两点的最近公共祖先(Lowest Common Ancestor,LCA).如下图所示: 2号点是7号点和9号点的最 ...

  5. asp.netcore3.1 将服务器配置为需要证书

    运行 asp.netcore 3.1应用程序时,弹出证书选择框. 将服务器配置为需要证书(Kestrel),在Program.cs中,按如下所示配置 Kestrel: public static vo ...

  6. ElasticSearch在CentOS的安装

    ElasticSearch在CentOS的安装 一.tar包安装 单机安装 创建elastic用户,ElasticSearch不支持root用户运行 useradd elastic 上传文件到 /so ...

  7. kafka-clients 1.0 内部请求接口文档

    AddOffsetsToTxnRequest version:0 name type defaultValue docString transactional_id STRING null The t ...

  8. 分治算法(二分查找)、STL函数库的应用第五弹——二分函数

    分治算法:二分查找!昨天刚说不写算法了,但是突然想起来没写过分治算法的博客,所以强迫症的我…… STL函数库第五弹——二分函数lower_bound().upper_bound().binary_se ...

  9. MIT 6.828 | JOS | 关于虚拟空间和物理空间的总结

    Question: 做lab过程中越来越迷糊,为什么一会儿虚拟地址是4G 物理地址也是4G ,那这有什么作用呢? 解决途径: 停下来,根据当前lab的进展,再回头看上学期操作系统的ppt & ...

  10. python接口自动化 - 断言(上)

    我们在做接口自动化的时候会用当unittest框架,这个框架中是有assert方法 当我们写好我们的case后 总要有个验证是否正确的东西,assert就给我们提供了非常强大的结果验证 序号 断言方法 ...