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. 光模块常见故障与使用注意事项详解

    光模块未正确安装常见故障有哪些?怎样才是正确的安装方法以及光模块注意事项有哪些?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 光模块常见故障 1.光模块端口被污染,会造成光模块无法正常使用.光模 ...

  2. 计算机模块的概念,用户定义类模块概念-计算机二级-Access

    本节课讲解[VBA - 用户定义类模块概念]同学们可以在下方评论区进行留言. 那我们开始今天的教程吧. 1.用户定义类模块由其属性和属性过程.方法及时间封装构成,"属性和属性过程" ...

  3. 光模块正确安装步骤及注意事项【图文】

    第1章  光模块未正确安装常见故障 常见故障1:光模块端口被污染,会造成光模块无法正常使用 光模块端口有异物,可以通过肉眼清晰的看到故障光口被白色异物封堵,左侧为正常模块,右侧为故障模块. 光纤跳线导 ...

  4. 【安信可A9G专题④】A9G模块/开发板GPS定位注意事项 坐标系转换

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  5. 命令方块和java_我的世界命令方块教程瞬间多次调用与执行模块概念

    小编为大家带来了<我的世界>命令方块教程瞬间多次调用与执行模块概念,这只是一个概念,只是由于我懒得大幅优化和弄生成器才拿出来的,可能大家能帮忙优化一下吧. 在研究icb,ccb,rcb的机 ...

  6. python中select用法_Python select及selectors模块概念用法详解

    1. select模块 针对select,要先理解其他几个概念: 文件描述符: 文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开 ...

  7. 【Vue基础七】--- 组件和模块概念

    文章目录 一. 组件 1-1 传统方式和组件的对比 1-2 模块和组件概念 1-2-1 模块+模块化 1-2-2 组件化 1-3 组件 1-3-1 非单文件组件 1-3-1-1 组件的使用 1-3-1 ...

  8. GPRS、433、Wifi、Zigbee模块概念和区别

    工业数据无线传输中,常涉及到诸如GPRS.433.Wifi.Zigbee模块等这些概念,如何理解,怎么区分,可能很多人并不知道,尤其是非技术人员: 1.GPRS模块是什么?有哪些功能? GPRS DT ...

  9. python函数模块概念_python中模块和包的概念

    1.模块 一个.py文件就是一个模块.这个文件的名字是:模块名.py.由此可见在python中,文件名和模块名的差别只是有没有后缀.有后缀是文件名,没有后缀是模块名. 每个文件(每个模块)都是一个独立 ...

最新文章

  1. 微博广告分布式配置中心的构建与实践
  2. 让Redis在你的系统中发挥更大作用
  3. 使用计算机的缺点英文作文,网络与计算机的好处与坏处英文作文
  4. 微服务架构(一):什么是微服务
  5. SQL语句中用Parameters有什么好处
  6. java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现
  7. resnet结构_ResNet 残差网络论文阅读及示例代码
  8. Maven学习总结(23)——Maven常用命令介绍
  9. 如何在win64位下搭载汇编环境?DOSbox教程之debug怎么使用?
  10. spring中bean属性scope
  11. 自定义rest api的基本思想过程--总结
  12. Canvas里的globalCompositeOperation
  13. 电容或电感的电压_电感基础4——什么是LC电路的“谐振频率”?
  14. ipad为什么显示itunes store无法连接服务器,ipad无法连接itunes store怎么办
  15. mysql 跨库插入_sql 跨库和域插入数据库
  16. 初级——如何进行Android单元测试
  17. maven 中央仓库网址
  18. matlab expand 扩展 用不了,matlab中expand函数 Matlab 里的expand怎么用
  19. 2022年尿素行业分析
  20. 南邮 OJ 1972 炒股票的女巫璐璐

热门文章

  1. java-构建jar带哟参数提示的
  2. Java:抽象类笔记
  3. golang的sync包例子
  4. lightoj 1026 无向图 求桥
  5. C#.net同步异步SOCKET通讯和多线程总结(转)
  6. vim 设置支持鼠标
  7. 计算机资产管理,▪ 资产管理
  8. kvm虚拟化_KVM 虚拟化环境搭建 - WebVirtMgr
  9. 【Pytorch神经网络实战案例】19 神经网络实现估计互信息的功能
  10. cv2.dnn.readNetFromDarknet()在python3上遇到的问题