今日内容

包:

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. BZOJ5056 OI游戏[最短路树]

    有生以来做过的bzoj比A+B还简单的最水的题.(确信) 不解释. UPD:据说这题正解应当是矩阵树定理?但是这个不是用来最小生成树计数的么?有生之年会补的. #include<iostream ...

  2. HDU-3613-Best Reward(Manacher, 前缀和)

    链接: https://vjudge.net/problem/HDU-3613 题意: After an uphill battle, General Li won a great victory. ...

  3. git回退错误的提交

    提交代码导致冲突,执行merge后,冲掉其他人的提交.需要reset,并新建分支进行恢复 解决方法: 1.找到最后一次提交到master分支的版本号,即[merge前的版本号] 2.会退到某个版本号 ...

  4. 处理springboot OTS parsing error: Failed to convert WOFF 2.0 font to SFNT

    springboot项目中添加了字体等文件后,页面无法识别,浏览器调试窗口报错如下: Failed to decode downloaded font: http://localhost:8080/f ...

  5. linux下su设置无密码模式

    1.首先切换到root用户下 2.进到etc目录  cd /etc 3. 修改文件的权限   chmod u+w /etc/sudoers 4. 修改文件   vim  /etc/sudoers

  6. poj 2431 Expedition 贪心+优先队列 很好很好的一道题!!!

    Expedition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10025   Accepted: 2918 Descr ...

  7. Xshell远程连接的具体操作和Xshell多会话设置小技巧

    前几天给大家分享了Xshell的安装教程,今天给大家分享如何在Xshell中进行远程连接,并且分享一下如何设置一条命令可以发送多个终端,这里以Xshell6为例进行说明,具体的教程如下. 1.依次点击 ...

  8. python-pyhs2

    #!/usr/bin/env python # -*- coding: utf-8 -*- # hive util with hive server2 """ @auth ...

  9. CentOS7 yum install elasticsearch

    首先安装 JDK 环境 # 本机是否已经安装,ElasticSearch 最低支持 jdk 1.7 yum list installed | grep java # 查看 yum 库中的 java 安 ...

  10. Centos7 yum install chrome

    一.配置 yun 源 vim /etc/yum.repos.d/google-chrome.repo [google-chrome] name=google-chrome baseurl=http:/ ...