Python模块和包

  • 模块(module)其实就是py文件,里面定义了一些函数、类、变量等
  • 包(package)是多个模块的聚合体形成的文件夹,里面可以有多个py文件,也可以嵌套文件夹
  • 库是参考其他编程语言的说法,是指完成一定功能的代码集合,在python中的形式就是模块和包

定义和调用 Python 模块

我们先来看如何定义一个 Python 模块。

定义一个 hello.py 模块,内容如下:

def sayhello(  ):
   print("Hello World!")

通常我们使用 import 语句来引入模块,语法如下:

import module1[, module2[,... moduleN]]

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。调用的时候使用 模块名.函数名 来进行调用

以上的示例为例,我们新建 do.py 文件调用 hello.py 模块中方法。

do.py 文件内容如下:

# 导入模块
import hello

# 现在可以调用模块里包含的函数了
hello.sayhello()

一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

在 do.py 页面执行快捷键 ctrl+b 控制台输出:Hello World!,证明调用 hello.py 中的方法成功。

这就是一个模块的定义和调用的示例,是不是也很简单。

from ... import ...

模块提供了类似名字空间的限制,允许 Python 从模块中导入指定的符号(变量、函数、类等)到当前模块。导入后,这些符号就可以直接使用,而不需要前缀模块名。

语法如下:

from modname import name1[, name2[, ... nameN]]

例如,要导入模块 hello 的 sayhello 函数,使用如下语句:

## 直接导入方法
from hello import sayhello
sayhello()

from … import * 语句

把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:

from modname import *

这提供了一个简单的方法来导入一个模块中的所有项目。

我们在 hello.py 中再添加一个 world 方法。

def world():
print("Python World!")

在 do.py 文件中引入全部方法进行调用。

## 导入所有方法
from hello import *
sayhello()
world()

执行后输出:

Hello World!
Python World!

证明 hello 模块中的两个方法都可以直接调用,实际项目中不推荐被过多地使用。

包(package)是 Python 中对模块的更高一级的抽象。简单来说,Python 允许用户把目录当成模块看待。这样一来,目录中的不同模块文件,就变成了「包」里面的子模块。此外,包目录下还可以有子目录,这些子目录也可以是 Python 包。这种分层,对模块识别、管理,都是非常有好处的。

特别地,对于一些大型 Python 工具包,内里可能有成百上千个不同功能的模块。科学计算领域,SciPy, NumPy, Matplotlib 等第三方工具,都是用包的形式发布的。

包定义

常见的包结构如下:

pakageName
-------__init__.py
-------moduleName1.py
-------moduleName2.py
------- ...

包路径下必须存在 __init__.py 文件。

示例:

我们创建一个 cal 的包,包中有一个计算器的 model ,结构如下:

cal
-------__init__.py
-------calculator.py

calculator.py 模块的代码如下:

def add(a,b) :
return a+b

def reduce(a,b) :
return a-b

def multiply(a,b) :
return a*b

def divide(a,b) :
return a/b

使用 Python 包

Python 包的使用和模块的使用类似,下面是导入的语法:

import 包名.包名.模块名

比如我们在 do.py 中导入 calculator.py

# 导入包
import cal.calculator
# 使用包的模块的方法
print(cal.calculator.add(1,2))

但是导入调用的时候报名比较长,这样就可以使用from ... import ...语句来简化一下。

# 导入包
from cal import calculator
# 使用包的模块的方法
print(calculator.multiply(3,6))

当包名越来越长的时候效果也会越好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值