Python学习(十一) —— 模块和包
一、模块
一个模块就是一个包含了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学习(十一) —— 模块和包的更多相关文章
- python学习笔记-模块和包
模块导入方法 1.import 语句 import module1[,module2[,...moduleN]] 当我们使用import语句的时候,Python解释器是怎么找到对应对文件对呢?答案是解 ...
- 4月8日 python学习总结 模块与包
一.包 #官网解释 Packages are a way of structuring Python's module namespace by using "dotted module n ...
- Python 2.7 学习笔记 模块和包
我们来考虑下如下几种场景: 1.编写一个python程序,如果程序比较简单,则可以把代码放到一个python文件中.但如果程序功能比较多,可能需要多个python文件来组织源代码.而这些文件之间的代码 ...
- 二十五. Python基础(25)--模块和包
二十五. Python基础(25)--模块和包 ● 知识框架 ● 模块的属性__name__ # my_module.py def fun1(): print("Hello& ...
- Python学习--Selenium模块
1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台
- Python学习--Selenium模块学习(2)
Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径2. 通过 `$PATH`环境变量找寻浏览器驱动 可参考Python学习--Selenium模块简单介绍(1) 控制 ...
- Python学习(22):模块
转自 http://www.cnblogs.com/BeginMan/p/3183656.html 一.模块基础 1.模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元 ...
- Python学习---重点模块的学习【all】
time [时间模块] import time # print(help(time)) # time模块的帮助 print(time.time()) # 时间戳 print(time.cloc ...
- python学习之模块&包的引用
名词解释: 模块:一个程序文件 包:相当于一个类库,打包发布后相当于c#中的dll, 包中可包括若干个模块,比如main.py就是一个模块,对于test2文件下的所有模块组成一个包 对于一个包而言,注 ...
- 【循序渐进学Python】10.模块和包
1.导入模块 任何Python程序都可以作为模块导入,只要Python解释器能找到我们定义的模块所在位置即可,一般来讲,在一个模块被导入时,Python解释器会按照下面的步骤进行搜索: 在当前所在目录 ...
随机推荐
- vscode 的使用笔记
1.使用vscode 的终端命令 ctrl + ~ 打开 vs 的终端 这是使用windows 自带的shell终端, 使用git.bash的shell 在设置里面,找到 terminal.int ...
- jqueryui插件slider的简单使用
<!DOCTYPE html> <html> <head> <title>slider</title> <meta charset=& ...
- python连接kafka生产者,消费者脚本
# -*- coding: utf-8 -*- ''''' 使用kafka-Python 1.3.3模块 # pip install kafka==1.3.5 # pip install kafka- ...
- 修改SIP协议中的User-Agent名称
修改目的:如果user-agent 带上了 GIT 版本信息,容易被人抓住版本漏洞针对性的攻击. 示例如下: SIP/2.0 100 Trying Via: SIP/2.0/UDP 192.168.5 ...
- 1.ROS启动小乌龟
启动turtlesim 在三个不同的终端中分别执行如下三个指令 roscore rosrun turtlesim turtlesim_node rosrun turtlesim turtle_ ...
- var_export 掉咋天
var_export 文件缓存经常使用 输出或返回一个变量的字符串表示 /** * 写入缓存 * * @param string $id * @param mixed $data * @ ...
- IOS 将状态栏改为白色
1.将 View controller-based status bar appearance 删除(默认为 YES),或设置为YES 2.设置rootViewcontroller,如果为viewC ...
- Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解
NVL(EXPR1,EXPR2) NVL2(EXPR1,EXPR2,EXPR3) NULLIF(EXPR1,EXPR2) COALESCE(EXPR1,,..,EXPRn) decode ------ ...
- Confluence 6 用户宏示例 - Hello World
下面示例显示了如何创建一个用户宏,在这个用户宏中显示文本 'Hello World!' 和任何用户在宏内容中输入的内容. Macro name helloworld Visibility Visibl ...
- 开源中国社区 https://git.oschina.net/ 添加 SSH 公钥 添加
首先可以参考官方的帮助文档 http://git.mydoc.io/?t=154712 然后进去码云首页 http://git.oschina.net 然后找到右边的头像点击一下 然后点击修改资料 ...