什么是包
包的本质是文件夹
为什么使用包
函数可以使得同一个文件中代码结构更清晰
木块(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. django创建命令及配置

    创建项目django-admin startproject XXX(项目名字)运行项目 python manage.py runserver创建子应用python manage.py startapp ...

  2. hue,kylin,ambari

    apache-kylin https://ambari.apache.org/ https://www.jianshu.com/p/c49c61b654da docker pull sequencei ...

  3. Express全系列教程之(六):cookie的使用

    一.关于Cookie 在我们关闭一个登录过的网址并重新打开它后,我们的登录信息依然没有丢失:当我们浏览了商品后历史记录里出现了我们点击过的商品:当我们推回到首页后,推荐商品也为我们选出了相似物品:事实 ...

  4. python基础知识巩固(os.walk)

    python 3 os.walk语法 os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下 os.walk(top,[, topdown=True],[, onerror= ...

  5. Python insert()方法--list

    描述 insert()方法:用于向列表中指定的索引位置之前插入新的对象,因为是在对应目标之前插入,故此方法无法像append()方法一样将对象添加到列表末尾. 语法 语法格式:list.insert( ...

  6. 玩转PIL >>> 玩转photo

    前:1.使用图片放在文件最后,需要的请自行下载 2.运行环境win10家庭版,已经安装好pillow库 一.学习总结 PIL库支持图像的储存,显示和处理,几乎能处理所有的图片格式,可以完成对图像的缩放 ...

  7. 快速排序 之添加复合插入排序和原始序列取中值左pivot

    quicksort中,当n小于一定值时,排序效率就比直接插入排序底了,所以,此时就不要再递归下去了,直接插入排序好了:快速的原理就是因为折半递归,所以初始pivot应该有个好一点的选择,这里在原序列左 ...

  8. POJ 1390 Blocks(区间DP)

    Blocks [题目链接]Blocks [题目类型]区间DP &题意: 给定n个不同颜色的盒子,连续的相同颜色的k个盒子可以拿走,权值为k*k,求把所有盒子拿完的最大权值 &题解: 这 ...

  9. mysql中utf8和utf8mb4区别

    一.什么是utf8mb4 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除 ...

  10. ApacheTomcat 8 9 安全配置与高并发优化

    编辑修改配置文件 [root@DaMoWang ~]# vim /usr/local/tomcat/conf/server.xml 禁用8005端口 telnet localhost 8005 然后输 ...