day17
包
什么是包
包的本质是文件夹
为什么使用包
函数可以使得同一个文件中代码结构更清晰
木块(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的更多相关文章
- 阶段01Java基础day17集合框架03
17.01_集合框架(HashSet存储字符串并遍历) A:Set集合概述及特点 通过API查看即可 B:案例演示 HashSet存储字符串并遍历 HashSet<String> hs = ...
- day17<集合框架+>
集合框架(HashSet存储字符串并遍历) 集合框架(HashSet存储自定义对象保证元素唯一性) 集合框架(HashSet存储自定义对象保证元素唯一性图解及代码优化) 集合框架(HashSet如何保 ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- 【目录】JUC集合框架目录
JUC集合框架的目录整理如下: 1. [JUC]JUC集合框架综述 2. [JUC]JDK1.8源码分析之ConcurrentHashMap(一) 3. [JUC]JDK1.8源码分析之Concurr ...
- java面试题——集合框架
先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...
- Java使用实现面向对象编程:第七章集合框架的解读=>重中之重
对于集合框架,是非常重要的知识,是程序员必须要知道的知识点. 但是我们为什么要引入集合框架呢? 我们之前用过数组存储数据,但是采用数组存储存在了很多的缺陷.而现在我们引用了集合框架,可以完全弥补了数组 ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- Java 之 集合框架(JCF)
1.集合框架 a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的.具有继承或实现关系的类与集合 b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象) ②特点: ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
随机推荐
- vue 实现子向父传值
父组件 <template> <div id="app"> <child @onChange='onChildValue'></child ...
- urllib库的应用及简单爬虫的编写
1.urllib库基础 1.1爬虫的异常处理 常见状态码及含义 301 Moved Permanently:重定向到新的URL,永久性 302 Found:重定向到临时的URL,非永久性 304 No ...
- Machine Learning, Homework 9, Neural Nets
Machine Learning, Homework 9, Neural NetsApril 15, 2019ContentsBoston Housing with a Single Layer an ...
- [Freemarker]自定义时间戳函数
使用freemarker的web项目经常需要用在Url后面加上时间戳来保证资源不被缓存,我们可以自定义方法实现时间戳. 先看freemarker配置信息: <bean id="free ...
- boost中打印python中的变量
p::extract<char const *>(p::str(py_variable))
- html5+css基础
最近在学习html+css3基础教程,整理了一些基础知识点.在此与大家分享. 1.盒模型 定义:css处理网页时,它认为每个元素都包含在一个不可见的盒子里,即我们所熟知的盒模型.其中它的主要属性有:h ...
- yum 运行失败
https://stackoverflow.com/questions/47633870/rpm-lib64-liblzma-so-5-version-xz-5-1-2alpha-not-found- ...
- Windows 10安装Docker 步骤及顺序
最近在工作中,重新安装Docker时,遇到了一点坑,故将自己解决经验分享一下~ Hardware assisted virtualization and data execution protecti ...
- 自己写的一些公共js方法
/* 说明文件:这里用的都是es6的语法 导入导出,拿vue举个栗子,你只需要在用到的地方,按需要导入就行了,然后在mounted中直接可以拿来用 比如下面的手机****方法,在需要用到的地方impo ...
- Python记录wsgi
类实现wsgi app from wsgiref.util import setup_testing_defaults from wsgiref.simple_server import make_s ...