今日内容

包:

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. vue项目和django项目交互补充,drf介绍,restful规范

    目录 一.vue项目与django项目的交互 二.drf(Django-restframework) 1. drf主要知识点 2. drf框架安装 3. web接口(WEB API) 4. restf ...

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

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

  3. table 表格

    标签 <table> 标签定义HTML中的表格 <tr>  标签定义表格中的行. <th>  标签定义表格中表头的每一项.元素内部的文本通常会呈现为居中的粗体文本. ...

  4. sublime 配置sftp代码自动上传(原)

    1.首先安装Package Control 使用 ctrl+`快捷键 或者 菜单项View > Show Console 来调出命令界面 然后复制粘贴下面的Python代码到命令输入框中: im ...

  5. nagios监控部署

    nagios监控部署. 在部署之前把依赖包安装了. [root@tiandong63 ~]# yum install -y gcc glibc glibc-common php gd gd-devel ...

  6. 初学 Nginx (一) SSI 的作用

    SSI:Server Side Include,是一种基于服务端的网页制作技术, Nginx ssi 的例子如下: It took a little while to figure this out ...

  7. pytype

    与mypy相比不仅可以显示错误行数,还可以看到哪个函数错误. mypy的图 pytype的图

  8. JSP自定义标签的执行原理

    当浏览器发来请求后,会将这个请求交给JSP翻译成的servlet来处理,自定义标签对应servlet中一个方法的调用,这个方法主要步骤如下 1,产生标签处理类的实例对象 2,将pageContext传 ...

  9. Linux 变量 $$ $! $? $- $# $* $@ $0 $n

    [参考文章]:linux中shell变量$#,$@,$0,$1,$2的含义解释 1. 变量说明 1.1 $$ Shell本身的PID(ProcessID) 1.2 $! Shell最后运行的后台Pro ...

  10. 纹身女孩 Tattooed girl 可爱动人 出水芙蓉 窈窕多姿

    目录 开宗明义