模块概念与使用及注意事项
1 模块概念
模块就是包含了python代码的文本文件,通俗讲,一个py文件就是一个模块。
2 使用模块(import)
比如,我们单独编写了一个模块,命名为mymodule.py,在该模块中我们定义一些函数和类,我们如何在test.py中使用呢?答案是使用import.
mymodule.py内容如下:
#Person类 class Person(object): def __init__(self,name,age): self.name = name self.age = age def showPerson(self): print("Name:%s Age:%d"%(self.name,self.age)) #函数 def myAdd(a,b): ret = a + b return ret |
test.py如下:
#引入mymodule模块 import mymodule #使用mymodule模块中的myAdd函数 #注意在使用mymodule中的符号的时候,必须指定模块名.符号的方式 ret = mymodule.myAdd(10,20) print("ret = %d"%ret) #使用mymodule模块中的Person类 person= mymodule.Person("Edward",22) person.showPerson() |
不仅可以引入函数,还可以引入一些全局变量、类等.
为什么必须加上模块名调用呢?
因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名.
3 使用模块(from...import...)
有时候我们只需要用到模块中的某个函数,只需要引入该函数即可.通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function( ),在模块B中也有函数function( ),如果引入A中的function在先、B中的function在后,那么当调用function函数的时候,是去执行模块B中的function函数。如果想一次性引入math中所有的东西,还可以通过from math import *来实现
#引入mymodule模块中的myAdd函数 from mymodule import myAdd #使用mymodule模块中的myAdd函数 #注意不可添加模块名 ret = myAdd(10,20) print("ret = %d"%ret) #使用mymodule模块中的Person类出错 #person= mymodule.Person("Edward",22) #person.showPerson() |
使用import xxx import *
#引入mymodule模块中的所有符号 from mymodule import * #使用mymodule模块中的myAdd函数 #注意不可添加模块名 ret = myAdd(10,20) print("ret = %d"%ret) #使用mymodule模块中的Person类出错 person= Person("Edward",22) person.showPerson() |
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
4 使用模块(import...as...)
将引入的模块重新命名:
#引入mymodule并重新命名为md #此时再使用mymodule就会未定义 import mymodule as md #使用mymodule模块中的myAdd函数 #注意不可添加模块名 ret = md.myAdd(10,20) print("ret = %d"%ret) #使用mymodule模块中的Person类出错 person= md.Person("Edward",22) person.showPerson() |
5 定位模块
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
- 当前目录。
- 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
- 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
- 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
6 __name__变量
#引入mymodule并重新命名为md #此时再使用mymodule就会未定义 import mymodule as md #使用mymodule模块中的myAdd函数 #注意不可添加模块名 ret = md.myAdd(10,20) print("ret = %d"%ret) #使用mymodule模块中的Person类出错 person= md.Person("Edward",22) person.showPerson() |
当我们执行此py文件的时候,由于此py文件包含了mymodule.py,导致mymodule中的测试程序也被执行了.
可以根据__name__变量的结果能够判断出,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码.
7 模块中的__all__
如果一个文件中有__all__变量,当使用fromxxx import *时导入的时候,只能导入__all__中的符号,其余符号导入失败.
模块概念与使用及注意事项相关推荐
- 光模块常见故障与使用注意事项详解
光模块未正确安装常见故障有哪些?怎样才是正确的安装方法以及光模块注意事项有哪些?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 光模块常见故障 1.光模块端口被污染,会造成光模块无法正常使用.光模 ...
- 计算机模块的概念,用户定义类模块概念-计算机二级-Access
本节课讲解[VBA - 用户定义类模块概念]同学们可以在下方评论区进行留言. 那我们开始今天的教程吧. 1.用户定义类模块由其属性和属性过程.方法及时间封装构成,"属性和属性过程" ...
- 光模块正确安装步骤及注意事项【图文】
第1章 光模块未正确安装常见故障 常见故障1:光模块端口被污染,会造成光模块无法正常使用 光模块端口有异物,可以通过肉眼清晰的看到故障光口被白色异物封堵,左侧为正常模块,右侧为故障模块. 光纤跳线导 ...
- 【安信可A9G专题④】A9G模块/开发板GPS定位注意事项 坐标系转换
本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...
- 命令方块和java_我的世界命令方块教程瞬间多次调用与执行模块概念
小编为大家带来了<我的世界>命令方块教程瞬间多次调用与执行模块概念,这只是一个概念,只是由于我懒得大幅优化和弄生成器才拿出来的,可能大家能帮忙优化一下吧. 在研究icb,ccb,rcb的机 ...
- python中select用法_Python select及selectors模块概念用法详解
1. select模块 针对select,要先理解其他几个概念: 文件描述符: 文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开 ...
- 【Vue基础七】--- 组件和模块概念
文章目录 一. 组件 1-1 传统方式和组件的对比 1-2 模块和组件概念 1-2-1 模块+模块化 1-2-2 组件化 1-3 组件 1-3-1 非单文件组件 1-3-1-1 组件的使用 1-3-1 ...
- GPRS、433、Wifi、Zigbee模块概念和区别
工业数据无线传输中,常涉及到诸如GPRS.433.Wifi.Zigbee模块等这些概念,如何理解,怎么区分,可能很多人并不知道,尤其是非技术人员: 1.GPRS模块是什么?有哪些功能? GPRS DT ...
- python函数模块概念_python中模块和包的概念
1.模块 一个.py文件就是一个模块.这个文件的名字是:模块名.py.由此可见在python中,文件名和模块名的差别只是有没有后缀.有后缀是文件名,没有后缀是模块名. 每个文件(每个模块)都是一个独立 ...
最新文章
- 微博广告分布式配置中心的构建与实践
- 让Redis在你的系统中发挥更大作用
- 使用计算机的缺点英文作文,网络与计算机的好处与坏处英文作文
- 微服务架构(一):什么是微服务
- SQL语句中用Parameters有什么好处
- java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现
- resnet结构_ResNet 残差网络论文阅读及示例代码
- Maven学习总结(23)——Maven常用命令介绍
- 如何在win64位下搭载汇编环境?DOSbox教程之debug怎么使用?
- spring中bean属性scope
- 自定义rest api的基本思想过程--总结
- Canvas里的globalCompositeOperation
- 电容或电感的电压_电感基础4——什么是LC电路的“谐振频率”?
- ipad为什么显示itunes store无法连接服务器,ipad无法连接itunes store怎么办
- mysql 跨库插入_sql 跨库和域插入数据库
- 初级——如何进行Android单元测试
- maven 中央仓库网址
- matlab expand 扩展 用不了,matlab中expand函数 Matlab 里的expand怎么用
- 2022年尿素行业分析
- 南邮 OJ 1972 炒股票的女巫璐璐