什么是包
包的本质是文件夹
为什么使用包
函数可以使得同一个文件中代码结构更清晰
木块(py文件)是以文件形式来组织代码结构
如果文件越来越多管理起来也不方便,所以需要使用文件夹来管理。从文件夹级别来管理代码
包的使用
如何创建包
新建一个文件夹就是一个包
包和文件夹仅有一个区别,包中应该包含一个__init__.py文件 __init__.py文件的作用
包也是模块
在导入一个模块时发生三件事都一样
问题是,第二部需要执行被导入文件的代码,包只是文件夹不能直接执行,所以需要提供一个py文件用来代表这个包成为一个模块 init是初始化单词的缩写,表示对包中的内容初始化
包的初始化其实就是导入这个包中所有其他模块
总结:导入包时本质上就是在导入包下的__init__.py文件
注意:init文件的作用仅仅是导入包内模块,提供给外界使用,不应该在里面写任何的逻辑代码 init是可选的,可有可无
在py2中要求必须有,py3是可选的
如果没有提供init文件,在使用模块时就直接使用文件夹点需要的模块名称
init的好处
可以将包内模块的功能直接导入到__init__中,这样一来对于包的使用者而言
可以无需考虑要使用的功能在哪个文件中,直接调用该功能 使用包的流程
1.创建一个包
2.编写包内部的模块代码
3.写完之后打开init文件,将需要提供给外界使用的模块导入其中 相对导入和绝对导入
相对?
指的是相对于某个模块而言的导入路径
语法:
from . import 名称
.表示的是当前这一级目录
再加一个点表示上一级
注意:执行文件中不能使用相对导入
使用相对导入时不能使用点返回到执行文件所在的一层 相对导入仅用于同一个包内的模块间相互导入 绝对?
指的是从执行文件开始的绝对路径,注意不是文件的绝对路径 导入时需要注意:
1.import导入时,点的后面必须是一个模块或包名
2.from导入时,import后面不能出现点 循环导入
开发时模块可能有很多,极有可能出现循环导入
循环导入指的是
两个模块相互导入,你导入我 我导入你

day17的更多相关文章

  1. 阶段01Java基础day17集合框架03

    17.01_集合框架(HashSet存储字符串并遍历) A:Set集合概述及特点 通过API查看即可 B:案例演示 HashSet存储字符串并遍历 HashSet<String> hs = ...

  2. day17<集合框架+>

    集合框架(HashSet存储字符串并遍历) 集合框架(HashSet存储自定义对象保证元素唯一性) 集合框架(HashSet存储自定义对象保证元素唯一性图解及代码优化) 集合框架(HashSet如何保 ...

  3. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  4. 【目录】JUC集合框架目录

    JUC集合框架的目录整理如下: 1. [JUC]JUC集合框架综述 2. [JUC]JDK1.8源码分析之ConcurrentHashMap(一) 3. [JUC]JDK1.8源码分析之Concurr ...

  5. java面试题——集合框架

    先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...

  6. Java使用实现面向对象编程:第七章集合框架的解读=>重中之重

    对于集合框架,是非常重要的知识,是程序员必须要知道的知识点. 但是我们为什么要引入集合框架呢? 我们之前用过数组存储数据,但是采用数组存储存在了很多的缺陷.而现在我们引用了集合框架,可以完全弥补了数组 ...

  7. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  8. Java集合框架练习-计算表达式的值

    最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...

  9. Java 之 集合框架(JCF)

    1.集合框架 a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的.具有继承或实现关系的类与集合 b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象) ②特点: ...

  10. 【集合框架】Java集合框架综述

    一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...

随机推荐

  1. Multi-Projector Based Display Code ------- Home

    Overview This project provides you with the tools and techniques you need to create your own large-a ...

  2. 微信开发基于springboot

    0.申请一个微信公众号,记住他的appId,secret,token,accesstoken 1.创建一个springboot项目.在pom文件里面导入微信开发工具类 <dependency&g ...

  3. kubernetes in action - Pods

    Pods 在上一篇也说明了,pods是kubernetes的最小部署单元,并且所有在pods中的container共享namespaces 那么为什么需要pods这样的概念? 因为在实际中,我们有一种 ...

  4. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

  5. jmeter 之 if controller

    jmeter版本5.0.下面是jmeter5.0的if逻辑控制器的截图 标红字体的意思大概是,如果勾选了 下面的 interpret condition as variable expression ...

  6. msmq访问格式

    //集群测试,以下格式不行(应是Host映射之类没配置OK) //_MSMQPath = @"FormatName:DIRECT=TCP:msmq496-ha\private$\496-10 ...

  7. LightGBM总结

    一.LightGBM介绍 LightGBM是一个梯度Boosting框架,使用基于决策树的学习算法.它可以说是分布式的,高效的,有以下优势: 1)更快的训练效率 2)低内存使用 3)更高的准确率 4) ...

  8. VUE2 项目 引入 leaflet.draw全过程

    leaflet.draw的参考文档:http://leaflet.github.io/Leaflet.draw/docs/leaflet-draw-latest.html   这个网址不稳定,多刷新几 ...

  9. Mybatis 元素内容必须由格式正确的字符数据或标记组成

    一个web应用,框架为SpringMVC Spring Mybatis ,昨天写了一下午的代码,因为逻辑较大,期间也没测,打算写完这个功能点在进行测试,谁知道写完的时候,tomcat根本启动不起来了, ...

  10. python实现使用词云展示图片

    记录瞬间 首先,要安装一些第三方包 pip install scipyCollecting scipy Downloading https://files.pythonhosted.org/packa ...