本来以为已经理解了import功能,没想到实际应用了还有这么多门道

比如,不通过模块名字,直接引入模块内的类

我们创建一个包叫ccc,然后下面的__init__里面什么也没写,都是空的

然后bbb.by里面的内容是:

def a():

print (1)

如果你要访问这个函数a

首先第一点,一个写法:

from ccc.bbb import a ,注意,他只能通过   包名.模块名来import具体函数

如果你直接用from ccc import a ,是会报警的,报警如下:

>>> from ccc import a
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ImportError: cannot import name 'a'

其实,关键是,如果你要通过from ccc import a,重要的是__init__的内容

如果我们把__init__内容写成下图3

from .bbb import a,这里面的 .bbb是什么意思呢?就是在同级目录下面的bbb模块,如果前面是2个点,那就是上级目录的bbb

现在,要讲一个重要概念!!!

当你导入一个包的时候,实际上是导入了这个包的__init__.py的文件,所以,如果你在__init__里面写入了其他的import功能,就等于是在初始化的时候帮忙导入了其他东西。

就比如下面的例子,他在导包的时候,就顺便导入了a这个函数!!

从这个话题引申到其他话题,我在做flask第一节课的时候一直无法理解,为什么from flask import Flask可以成功?

第一个flask是包,第二个Flask是类,但是,实际上这个Flask类是在flask包的目录下app.py里面的。

所以后来我去看了flask包的__init__.py,原来在里面,他已经帮你导入了Flask类,所以你在导入flask包的时候,就已经可以直接导Flask类了

看到里面的 from .app import Flask, Request, Response

.app就表示了在flask包下,和__init__同级的app.py



Python import 功能(进阶篇)相关推荐

  1. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个" ...

  2. 【Python第六篇】Python面向对象(进阶篇)及相关(异常处理、反射)

    本节内容: 类的成员 字段 方法(静态方法.类方法.普通方法) 属性 类成员的修饰符(私有成员.公有成员) 类的特殊成员 异常处理 反射 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成 ...

  3. 三、python基础语法进阶篇(黑马程序猿-python学习记录)

    黑马程序猿的python学习视频:https://www.bilibili.com/video/BV1qW4y1a7fU/ ====================================== ...

  4. 【Python教程】进阶篇

    目录 2.1函数 2.1.1函数基础 2.1.1.1函数的定义和调用 2.1.1.2函数的作用 2.1.1.3函数的参数 2.1.1.4函数的返回值 2.1.1.5函数的作用域-LEGB 2.1.2闭 ...

  5. 【Python】【进阶篇】十二、Python爬虫的Xpath简明教程(十分钟入门)

    目录 十二.Python爬虫的Xpath简明教程(十分钟入门) 12.1 Xpath表达式 12.2 Xpath节点 12.3 节点关系 12.4 Xpath基本语法 12.4.1 基本语法使用 12 ...

  6. 【Python】【进阶篇】十六、Python爬虫的浏览器实现抓包

    目录 十六.Python爬虫的浏览器实现抓包 16.1 控制台界面 16.1.1 NetWork 16.1.2 Sources 16.1.3 Console 16.1.4 Application 16 ...

  7. Python循环之进阶篇

    上一期我们简单介绍了for-in.while循环,本期我们就来继续深入学习循环结构的内容. 首先,我们先来了解一下单分支结构,我们用一个案例来形象了解一下吧! 单分支结构只有是和否两种情况 语法: i ...

  8. 笨办法学python3进阶篇下载_笨办法学Python 3:进阶篇

    第 一部分 准备知识 1 如果不喜欢作者的个人流程怎么办 2 如果发现自己太糟糕怎么办 2 习题0 准备工作 3 程序员用的编辑器 3 Python 3.6 3 工作终端 4 pip和virtuale ...

  9. python xposed_Xposed插件开发进阶篇

    Dalvik 孵化器 Zygote (Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育/fork出来的)进程对应的程序是/system/bin ...

最新文章

  1. 执行delete触发器及示例演示
  2. python学费多少-Python开发学费一般多少钱
  3. 华硕P8B-C/2L及其他
  4. 转:Unity3D研究院之提取游戏资源的三个工具支持Unity5(八十四)
  5. 实验一 线性表、堆栈和队列的操作与实现
  6. roll() java_Java Calendar roll()用法及代码示例
  7. 随想录(最简单的windows图形编程之Easyx)
  8. Java网络编程之客户端中的Socket
  9. STL中map与hash_map容器的选择
  10. 58同城 | Embedding技术在房产推荐中的应用
  11. 电梯远程监控维护系统方案
  12. 四 解决问题1 只列式不计算机,小学六年级数学下册期末试题人教版
  13. python中的head函数_Pandas DataFrame.head()用法例子
  14. 浏览器端可以直接运行Python了
  15. NPDP产品经理小知识:安索夫矩阵
  16. 江南大学计算机阶段测试题,江南大学2016.09计算机应用基础(专科类)第2阶段测试题...
  17. 2021.11.17
  18. 群狼调研开展电器店神秘顾客暗访违规稽核项目
  19. Basler Blaze-101开发实践(1)——实时采图
  20. Java 包及访问控制权限

热门文章

  1. VR-Platform 簡介
  2. cesium 智慧城市态势管理系统介绍
  3. MAC:外接其他接盘设置f1——f12功能键位
  4. python校园二手书交易系统毕业设计开题报告
  5. 如何拿到带名字的PA认证证书
  6. android button自动点击事件,Android Button按钮的四种点击事件
  7. 西安工业云上线 中服助力智能制造发展
  8. es对已有的索引给主键_Elasticsearch(ES) 创建索引
  9. 编译 pld 文件的时候缺少依赖文件: 怎样打patch
  10. 软件测试工程师测试用例及常用工具(总结中)