什么是模块:就是一系列功能的集合体

  模块的来源 :1内置模块   2 第三方模块   3 自定义模块

  模块的格式:

    1 使用python编写的.py文件

    2 已被编译为共享库或DLL的C或C++扩展

    3 把一系列模块组织到一起的文件(注:文件下有一个_init_.py文件,该文件夹称之为包)

    4 使用C编写病链接到python解释器得内置模块

为何要用模块

  1 使用内置的或者第三方模块的好处是:拿来主义,可以极大提升开发效率

  2 使用自定义模块的好处是:可以减少代码冗余(抽取我们自己程序中要公用的一些功能定义模块,然后程序的各部分组件都去模块中调用共享的功能)

如何用模块

  大前提:一定要区分开谁是执行文件,谁是被导入模块

import导入模块

首次导入模块发生什么事  文件名是spam.py 模块名是spam

  1 会产生一个模块的名称空间

  2 执行文件spam.py将执行过程中产生的名字都有放到模块的名称空间中

  3 在当前执行文件的名称空间中拿到一个模块名,该名字指向模块的名称空间

import spam

之后的导入,都是直接引用第一次导入的成果,不会重新执行文件

在执行文件中访问模块名称空间中名字的语法:模块名.名字(spam.x)  指名道姓的跟spam要名字x 肯定不会与当前执行文件中的名字冲突

 总结import导入模块:在使用时必须加上前缀:模块名

 优点:指名道姓的向某一个名称空间要名字,肯定不会与当前名称空间中的名字冲突

 缺点:但凡应用模块中德名字都需要加前缀,不够简洁

from 模块 import 模块名导入

首次导入模块发生3件事 :

  1 创建一个模块的名称空间

  2 执行文件spam.py将指向过程中产生的名字都放到模块的名称空间中

  3 在当前执行文件中拿到一个名字,改名字就是执行模块中相对应的名字

  总结:from、、、improt、、、

  优点:使用时无需再加前缀,更简洁

  缺点:容易与当前名称空间中的名字冲突

起别名  通过as关键字可以给模块起别名: 模块名一旦起别名,原模块名就不能再使用

from spam import readl as r1

r1()

自执行与模块区别

  

# __name__:
# 1.在py文件作为模块被使用时,__name__为模块名
# 2.在py文件自执行时,__name__为字符串 '__main__'

print("共有逻辑")
if __name__ == '__main__':
# 所有自执行的逻辑
print("m6: 我是自执行的")
a = 10 # 产生的是全局的名字
else:
# 所有模块的逻辑
print("m6: 我被导入执行的")
print(a) # 会报错:走else就不可能走if,所以a压根没产生

模块 import 与from的更多相关文章

  1. python 导入模块 import 理解

    --python 导入模块 import 理解 -----------------------------------2014/03/18 python 导入一个模块的过程要求有一个叫做“路径搜索”的 ...

  2. 模块(import语句,from...import语句,_name_属性)

    1, 什么是模块? 模块就是一系列功能的集合体 模块分为四个通用的类别: 1), 使用python编写的.py文件(*****) 2), 已被编译为共享库或DLL的C或C++扩展 3), 把一系列模块 ...

  3. python 全栈开发,Day28(复习,os模块,导入模块import和from)

    一.复习 collections 增加了一些扩展数据类型 :namedtuple orderdict defaltdict队列和栈time 时间 三种格式 : 时间戳 结构化 字符串random 随机 ...

  4. Python进阶(八)----模块,import , from import 和 `__name__`的使用

    Python进阶(八)----模块,import , from import 和 __name__的使用 一丶模块的初识 #### 什么是模块: # 模块就是一个py文件(这个模块存放很多相似的功能, ...

  5. python 模块import(26)

    一.模块简介 python开发中,每一个.py文件都可以看作是一个模块,模块内部的函数或者方法可以被其他模块调用,至于函数或者方法是具体如何实现的,调用者不需要关心. 假如项目中既含有UI也有逻辑代码 ...

  6. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  7. Python标准模块--import

    1 模块简介 作为一个Python初学者,你首先要学会的知识就是如何引入其它模块或者包.但是,我发现有些开发者虽然使用Python很多年,依然不了解Python引入机制的灵活性.这篇文章,我们就会研究 ...

  8. 模块import,from ..import...

    首次导入模块发生3件事 1.创建一个模块的名称空间 2.执行文件spam.py,将执行过程中产生的名字都放到模块的名称空间中 3.在当前执行文件中直接拿到一个名字,该名字就是执行模块中相对应的名字 f ...

  9. Python导入模块-Import

    #1语法importimport module1,module2,module3,module4 #2from xx import xx 语句from module import name1,name ...

随机推荐

  1. 局域网ARP攻击防护

    通过借助一些安全软件来实现局域网ARP检测及防御功能. A.电脑管家 电脑管家--工具箱--下载ARP防火墙模块 不支持window2003 B.服务器安全狗 Windows版下载:http://fr ...

  2. C++学习 —— 住着魔鬼的细节

    13周的C++课程转眼就学完了5周,C++的标准基本上已经覆盖到了.再加上coding了上百行,总算是对C++有了一个基本的了解.接下来的学习会是关于STL的,所以在此对目前所学做一个小的总结. th ...

  3. 给vscode添加右键打开功能

    将以下文本存为vscode.reg,然后运行: Windows Registry Editor Version 5.00  ; Open files [HKEY_CLASSES_ROOT\*\shel ...

  4. HBase多条件及分页查询的一些方法

    HBase是Apache Hadoop生态系统中的重要一员,它的海量数据存储能力,超高的数据读写性能,以及优秀的可扩展性使之成为最受欢迎的NoSQL数据库之一.它超强的插入和读取性能与它的数据组织方式 ...

  5. windows系统关闭某个端口的服务(以443端口为例子)

    1.查看443被什么服务占用 netstat -ano | findstr 443 查看到443端口被pid为5140的服务占用了 2.去到任务管理器->任务 找到PID为5140的服务,然后停 ...

  6. 创建一个抽象的员工类, 抽象开发累继承员工类,JavaEE ,和安卓继承开发类在测试类中进行测试

    /* 1 定义一个员工类  所有的子类都抽取(抽象类)  Employee            属性:姓名  工号(生成get  set  )       方法:工作  抽象     2 定义一个研 ...

  7. 文本编辑器vim和gedit

    vim和gedit都是文本编辑器 vim用法: vim 文件名 #打开文件 输入 i,进入文本编辑模式,编辑完再按ESC,退出编辑模式,再输:wq,保存退出:如果输:q!则是不保存退出,很简单.. 如 ...

  8. python特殊函数__str__、__repr__和__len__

    1.__str__ 首先介绍__str__ class Students(object): def __init__(self, *args): self.names = args # def __s ...

  9. 【转】Windows下Python快速解决error: Unable to find vcvarsall.bat

    转自:http://blog.csdn.net/sad_sugar/article/details/73743863 系统配置:Windows10 x64, Visual Studio 2017, P ...

  10. [04-01]css组合选择器

    /* 私人笔记 */   组合选择器:把基本选择器通过特殊符号串在一起,可以带来一些特殊的意义: 1.源码 <!DOCTYPE html> <html lang="zh&q ...