今日内容

包:

1. 导入模块的细节

2. 包的概念与使用

3. 包中的相对导入语法

跨文件夹导入模块

1. 假设有一个文件夹a ,a 的下面有一个ma 的模块,如果a文件夹所在目录在环境变量,a文件夹中的ma 模块可以被以下方式导入:

import a.ma   |    from a import ma

2. 基于第一条,如果文件夹a 下有一个b文件夹,文件夹下有一个mb模块,如果a文件夹所在的目录在环境变量,a文件夹中的b文件夹内的mb模块就可以被以下方式导入:

import a.b.mb   |   from a.b import mb

3. 基于第二条,如果mb模块中还要一个叫abc的名字需要导入,如果a文件夹所在目录在环境变量,那么a文件中的b文件夹的mb模块中的abc名字导入的方式是:

import a.b.mb.abc     # 此方法是错误的 ,符号. 的 左侧必须是文件夹

from a.b import mb.bbb  #  此方法也是错误的,符号. 的左侧必须是文件夹

from a.b mb import abc   #   使用此方法才能找到 abc

模块的两种被执行方式

总结:

1. 一个py文件作为自执行文件,__name__变量的值为'__main__'

2. 一个py文件作为模块被导入执行,__name__变量的值为'文件(模块)名'

                                 

如何区别两种方式: 有一个可以让一个文件拥有自执行,也能被导入执行两种共存的方法。

需要在需要的py文件中写:

if __name__=='__main__'    #  如果模块是直接运行的,则代码块会被直接运行,如果模块是被导入的,则代码块不被运行

包: 一系列模块的集合体,用文件夹来管理一系列有联系功能的模块,该文件夹我们就称之为包,文件夹名就是包名

包与普通文件夹存在区别:包的文件夹中一定存在一个__init__.py 文件

              -----在py2中:__init__.py 必须创建

              -----在py3中:__init__.py建议创建,不创建系统会自动创建

__init__.py文件

1. 产生一个全局名称空间,提供给包,就代表包的名称空间

2. 管理,包可以使用符号 . 直接使用的名字

导入包所完成的三件事

1. 编译形成包中__init__.py文件的pyc文件

2. 执行__init__.py 文件,形成一个全局名称空间,将__init__.py文件中所有名字存放其中,该名称空间就代表包的空间

3. 在导包的文件中,产生一个与包名相同的名字,指向包的名称空间  (__init__.py文件的全局名称空间)

直接使用包中模块

如果只是想作为普通文件夹,py3中可以省略__init__文件,本质上文件夹也是包

导入的手段:1.指名道姓到某一个模块    2. 指名道姓到某一个模块中的名字

包的管理

在包中采用相对导入管理模块或模块中的名字

在包的__init__.py文件或是包中任意一个模块中

符号 . 代表的是当前文件所在的目录

符号 . . 代表当前文件所在的上一级目录

注: 语法包不能出包,因为包外的文件都可以自执行,但可以使用 . 导入的文件是不能自执行的

导模块的细节:(跨文件导入模块 &模块的两种执行方式) | 包的概念与使用 | 包中的相对导入语法的更多相关文章

  1. python常有模块:模块、引入语法、两种执行方式、模块搜索顺序

    今天主要讲了以下几点:一.模块三问.定义及分类二.import和from的语法三.文件的两种执行方式及搜索顺序四.内置函数 一.模块.import和from的语法 1.什么是模块   模块是一堆功能函 ...

  2. Java学习-014-文本文件写入实例源代码(两种写入方式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 第一种:文本文件写入,若文件存在则删除原文件,并重新创建文件.源代码如下所示: /** * @fun ...

  3. Windows校验文件哈希hash的两种常用方式

    大家经常都到哪儿去下载软件和应用程序呢?有没想过下载回来的软件.应用程序或资源是否安全呢?在 Windows 10 和 Office 2016 发布当初,很多没权限的朋友都使用第三方网站去下载安装映像 ...

  4. 将HTML页面自动保存为PDF文件并上传的两种方式(一)-前端(react)方式

    一.业务场景 公司的样本检测报告以React页面的形式生成,已调整为A4大小的样式并已实现分页,业务上需要将这个网页生成PDF文件,并上传到服务器,后续会将这个文件发送给客户(这里不考虑). 二.原来 ...

  5. 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0

    实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...

  6. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

  7. javascript文件夹选择框的两种解决方案

    javascript文件夹选择框的两种解决方案 解决方案1:调用windows 的shell,但会有安全问题. * browseFolder.js * 该文件定义了BrowseFolder()函数,它 ...

  8. Java学习-013-文本文件读取实例源代码(两种数据返回格式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...

  9. Django学习——ajax发送其他请求、上传文件(ajax和form两种方式)、ajax上传json格式、 Django内置序列化(了解)、分页器的使用

    1 ajax发送其他请求 1 写在form表单 submit和button会触发提交 <form action=""> </form> 注释 2 使用inp ...

随机推荐

  1. Js基础知识(五) - 前端性能优化总结

    前端性能优化总结 资源优化 缓存 最好的资源优化就是不加载资源.缓存也是最见效的优化手段.说实话,虽然说客户端缓存发生在浏览器端,但缓存主要还是服务端来控制,与我们前端关系并不是很大.但还是有必要了解 ...

  2. SpringBoot项目 设置全局跨域

    package com.nf147.policy_project; import org.springframework.stereotype.Component; import javax.serv ...

  3. 白话Spring(基础篇)---AOP(execution表达式)(转)

    [一知半解,就是给自己挖坑] 作为AOP的最后一节内容,我们来简单总结一下切面表达式上见的书写方法.下面的那内容有参考其他博文,在此先对开源博客的各位大神表示感谢! ----------------- ...

  4. vue cli3 + cube-ui 配置rem踩坑记录

    在install cube-ui时,选择了后编译,选中使用rem的时候会发现,怎么刷新页面的html字体被设置成了37.5px 感觉太大了,于是去寻找修改的办法,第一反应是webpack的配置,于是去 ...

  5. jquery keyup()方法 语法

    jquery keyup()方法 语法 作用:完整的 key press 过程分为两个部分,按键被按下,然后按键被松开并复位.当按钮被松开时,发生 keyup 事件.它发生在当前获得焦点的元素上.ke ...

  6. “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学) E 小花梨的数组 线段树

    题意 分析 预处理出每个数的最小素因子,首先可以知道\(minprime(x*minprime(x))=minprime(x)\),我们用线段树维护区间最大值\(mx[p]\),注意这里的最大值并不是 ...

  7. 深度学习笔记(十四)车道线检测 SCNN

    论文:Spatial As Deep: Spatial CNN for Traffic Scene Understanding 代码:https://github.com/XingangPan/SCN ...

  8. node链接mongoDB及封装

    // 这个模块中封装所有对数据库的常用操作 const MongoClient = require('mongodb').MongoClient; const assert = require('as ...

  9. 域内信息收集 powershell收集域内信息

    POwershell收集域内信息 Powershell(你可以看做CMD的升级版 但是和cmd完全不一样) 原来的powershe是不能执行任何脚本的 更改执行策略 这个是一个绕过的脚本 接下来我们了 ...

  10. BZOJ1123 BLO

    割点的好题. 联通图,难度降低.首先对于一个点,如果他不是割点,那它的贡献是2*(n-1),就是任何一个其他节点都少了正反两个数对,这个看样例可以看出来. 如果它是一个割点,去掉他以后会出现若干个联通 ...