一、模块

  一个模块就是一个包含了python定义和声名的文件,文件名就是模块名加上.py后缀。

  import加载的模块分为四个通用类别:

    1.使用python编写的代码(.py文件)

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

    3.包好一组模块的包

    4.使用C编写并链接到python解释器的内置模块

  为何要使用模块:将一些复杂的需要重复使用的功能进行归类,分别放到同一个py文件中,需要调用的时候直接导入,提高代码的复用性。

二、导入模块

  先看内存里有没有这个模块,有则不导入,没有则导入,因此重复导入模块只会导入一次。

  每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,因此在自己编写模块时,不用但是会发生变量冲突

  import 模块名

  import 模块名 as 变量名:给模块重命名,重命名之后之前的名字就失效了,新名字可以直接使用

    适用于:模块名太长;模块名和文件的变量重名

  导入多个模块:import 模块名1,模块名2,模块名3...

  导入模块的顺序:先导入内置的模块,再导入扩展模块,最后导入自定义的模块

  from 模块名 import 方法

  from 模块名 import *,默认把模块里所有的变量导入,如果定义了__all__,则只会导入__all__里面的变量,__all__是一个列表,里面存放变量名的字符串形式

  from 模块名 import 方法1 as d,方法2 as p

  from 模块名 import (方法1,方法2,方法3)

  from import的方法会直接将导入的内容放在全局,如果在自己的文件有重名,那么会发生覆盖

pi = 3.14
from math import pi
print(pi) #3.141592653589793 from math import pi
pi = 3.14
print(pi) #3.14

  一旦导入了模块,如果修改模块的内容,修改的内容不会生效,如果想要使修改的内容生效,则要重启程序,或者导入importlib模块并使用reload()方法

import time,importlib
import custom #导入自定义模块
custom.drive() #调用自定义模块的drive方法
time.sleep(10) #手动修改drive方法
importlib.reload() #调用importlib的reload方法
custom.drive() #重新调用drive方法

  把模块当作脚本执行

  在需要被导入的模块中添加一行代码:if __name__ == '__main__':,当导入这个模块的时候,这行代码后面的内容就不会执行,因为导入模块后,被导入模块的__name__发生了变化,变成了模块名  

name = 'abc'
def func():
print('Hello World!') if __name__ == '__main__': #当这个文件被当作模块导入时,if里面的语句不会被执行,可以放测试的代码
print(name)
func()

Python学习(十一) —— 模块和包的更多相关文章

  1. python学习笔记-模块和包

    模块导入方法 1.import 语句 import module1[,module2[,...moduleN]] 当我们使用import语句的时候,Python解释器是怎么找到对应对文件对呢?答案是解 ...

  2. 4月8日 python学习总结 模块与包

    一.包 #官网解释 Packages are a way of structuring Python's module namespace by using "dotted module n ...

  3. Python 2.7 学习笔记 模块和包

    我们来考虑下如下几种场景: 1.编写一个python程序,如果程序比较简单,则可以把代码放到一个python文件中.但如果程序功能比较多,可能需要多个python文件来组织源代码.而这些文件之间的代码 ...

  4. 二十五. Python基础(25)--模块和包

    二十五. Python基础(25)--模块和包 ● 知识框架   ● 模块的属性__name__ # my_module.py   def fun1():     print("Hello& ...

  5. Python学习--Selenium模块

    1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台

  6. Python学习--Selenium模块学习(2)

    Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径2. 通过 `$PATH`环境变量找寻浏览器驱动 可参考Python学习--Selenium模块简单介绍(1) 控制 ...

  7. Python学习(22):模块

    转自 http://www.cnblogs.com/BeginMan/p/3183656.html 一.模块基础 1.模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元 ...

  8. Python学习---重点模块的学习【all】

    time     [时间模块] import time # print(help(time)) # time模块的帮助 print(time.time()) # 时间戳 print(time.cloc ...

  9. python学习之模块&包的引用

    名词解释: 模块:一个程序文件 包:相当于一个类库,打包发布后相当于c#中的dll, 包中可包括若干个模块,比如main.py就是一个模块,对于test2文件下的所有模块组成一个包 对于一个包而言,注 ...

  10. 【循序渐进学Python】10.模块和包

    1.导入模块 任何Python程序都可以作为模块导入,只要Python解释器能找到我们定义的模块所在位置即可,一般来讲,在一个模块被导入时,Python解释器会按照下面的步骤进行搜索: 在当前所在目录 ...

随机推荐

  1. CF 573B

    Bear and Blocks time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  2. 解决:angularjs radio默认选中失效问题

    添加ng-model后checked="checked"失效,可见angularjs也不好,会失效html标准属性   解决:添加ng-checked="1" ...

  3. 如何将本地项目上传到Github

    看了这篇文章觉得写的很详细很适合初学者  提供给大家参考下. http://blog.csdn.net/zamamiro/article/details/70172900 注意如果第二次git pus ...

  4. windows连接服务端的域名正常,linux却不通,(针对于负载均衡后端节点设置)

    1.初步判断不是网络上的,因为windows主机访问正常, 2.修改客户端linux主机 net.ipv4.tcp_tw_recycle=0,测试是否正常,(服务器当连接数达到一定量之后,会执行rec ...

  5. 23)django-缓存

    一:目录 1)简介 2)django缓存方式 3)django应用方式 二:简介 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显, 最简单解决方 ...

  6. iOS -- Effective Objective-C 阅读笔记 (3)

    1:  理解 属性 的概念 属性会自动生成存取方法,  可以利用点语法调用, 若不想编译器自动合成存取方法, 可以自己实现, 还有另外一种方法, 就是使用 @dynamic 关键字, 它会告诉编译器, ...

  7. ORA-00379: no free buffers available in buffer pool DEFAULT for block size 16K

    SYS@orcl> select TABLESPACE_NAME ,AUTOEXTENSIBLE from dba_data_files ; ERROR: ORA-00379: no free ...

  8. 设置外部查找工具来索引 Confluence 6

    任何网页的 crawler  工具都可以被用来索引你的 Confluence 站点中的内容.如果你希望注册用户才能够查看的内容也被索引的话,你需要为你的 Confluence 创建一个只被 crawl ...

  9. 【Windows】添加定时任务不执行

    [问题]windows定时任务不执行.在“所有程序->附件->系统工具->任务计划程序”中添加了定时调用“D:\sys_task\bugmanager\run.bat”脚本的任务计划 ...

  10. gnuradio 创建cos_source

    C++教程 ys_linux@computer:~$ gr_modtool nm kcd Creating out-of-tree module in ./gr-kcd... Done. Use 'g ...