Python的模块和包

Python的模块和包

下面学习下Python中的模块,看看什么是模块?为什么使用模块?
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py,这里可以理解为一个.py文件。当你的文件中引入了一个模块后,可以使用它的函数 、变量等。这也是使用 python 标准库的方法。这里的标准库指的是Python提供的一些通用模块,我们在实现一些功能时,可直接引入使用,不必再自己写,后面会单独写一篇Python提供的通用模块有哪些,这里不再赘述。

模块的导入

模块的导入一共有三种方式:方式一:
import module
方式二:
from module import funcname #函数
from module import fa, fb, fc #变量
from module import classname #类
方式三:
from module import *
模块重命名:
import time as t

导入的原理如下:
执行导入模块的代码的时候,会直接执行被导入的模块中所有的代码
a.重复导入问题 import在导入模块的时候会自动检测这个模块之前是否已经导入过,来避免一个模块的重复导入
b.阻止模块中的内容被其他模块导入
将不需要被其他模块执行的语句写入"if name == ‘main’:"对应的if语句中

下面我们来做个代码示例,首先定义一个模块:

def print_func( word ):
   print "Hello : ", word
   return

再写一个文件引入它:

# 导入模块
import MyFirstMoudle
# 现在可以调用模块里包含的函数了
MyFirstMoudle.print_func("zhangjianbo")

执行结果如下:

> python Mypython-27-1.py
Hello :  zhangjianbo

下面来看下包的概念
包是一种管理 Python 模块命名空间的形式,采用"点"模块名称。比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块B。
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。

简单来说,包就是文件夹,但该文件夹下必须存在 init.py 文件, 该文件的内容可以为空。

包的导入方式

a 用户可以每次只导入一个包里面的特定模块,比如:
import sound.effects.echo
这将会导入子模块:sound.effects.echo。 他必须使用全名去访问:
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
b 导入子模块的方法是: from sound.effects import echo
这同样会导入子模块: echo,并且他不需要那些冗长的前缀,所以他可以这样使用: echo.echofilter(input, output, delay=0.7, atten=4)
c 还有一种变化就是直接导入一个函数或者变量:
from sound.effects.echo import echofilter
同样的,这种方法会导入子模块: echo,并且可以直接使用他的 echofilter() 函数:
echofilter(input, output, delay=0.7, atten=4)
注意当使用from package import item这种形式的时候,对应的item既可以是包里面的子模块(子包),或者包里面定义的其他名称,比如函数,类或者变量。

下面我们看一个简单的应用案例,我们来写一个包 .

首先建立一个文件夹,叫做MyFirstPackage,下面建三个文件 job1.py、job2.py、init.py 文件 如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TsbbXMld-1649847580055)(C:\Users\broker\AppData\Roaming\WeLink\appdata\IM\0000294496@csi\ReceiveFiles\ScreenShot\04831b15-7ff5-4773-8a2a-d0c39573a4e3.png)]

第二步 完善三个文件内容

job1.py

def job1():
   print ("I'm in job1")

job2.py

def job2():
   print ("I'm in job2")

init.py

if __name__ == '__main__':
    print ('作为主程序运行')
else:
    print ('MyFirstPackage 初始化')

然后我们在 MyFirstPackage 同级目录下创建 test.py 来调用 MyFirstPackage

from MyFirstPackage.job1 import job1
from MyFirstPackage.job2 import job2
job1()
job2()

运行结果如下图:

> python test.py
MyFirstPackage 初始化
I'm in job1
I'm in job2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值