【Python进阶篇 面向对象程序设计(4) 模块 】

1、模块的定义

(1)模块是一个包含 Python 代码的文件,扩展名为 .py。
(2)作用
代码组织:将功能相关的代码放在同一个文件中。
命名空间隔离:避免全局变量和函数名冲突。
复用性:模块可以在多个程序中导入和使用

2、导入模块

(1)import 模块名

导入整个模块,通过模块名访问其内容:
定义一个名为:math_utils的.py文件

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


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

将math_utils导入test02文件,代码和执行结果如下:

import math_utils
num = math_utils.mulitiply(2, 4)
print("2,4两者乘积是:", num)
add = math_utils.add(5, 4)
print("5,4两者之和是:", add)

在这里插入图片描述

(2)from 模块名 import 函数/类/变量

导入模块中的特定内容,直接使用具体的变量、函数和类名访问。

from math_utils import add
add1 = add(2, 3)
print("两者之和:", add1)

直接导入math_utils 的add函数。

(3)from 模块名 import *

导入模块中的所有内容(不推荐,可能导致命名冲突)。
原因是后导入的同名变量、函数或者类会覆盖先导入的。

from math_utils import *
add1 = add(2, 3)
print("两者之和:", add1)
mulitiply1 = mulitiply(2, 3)
print("两者之积:", mulitiply1)

练习题:创建两个模块,一个是矩形模块,一个是圆形模块,两个都包含周长和面积计算函数,在另一个python文件中导入这两个模块,并调用相应的函数计算周长和面积。
juxing.py

def girth(width, height):
    return (width + height) * 2


def area(width, height):
    return width * height


if __name__ == '__main__':
    print(area(10, 20))

yuanxing.py

import math

PI = math.pi


def girth(r):
    return round(2 * PI * r, 2)  # round()函数用于保留小数位数


def area(r):
    return round(PI * r * r, 2)


if __name__ == '__main__':
    print(area(10))

compute.py

from juxing import *
from yuanxing import *

if __name__ == '__main__':
    print("圆形的周长是:", girth(10))
    print("矩形的周长是:", girth(10, 20))

运行结果:
在这里插入图片描述
有报错,矩形模块的girth()函数被圆形的girth()函数覆盖导致。解决方案,不使用from import * ,使用import

import juxing
import yuanxing

if __name__ == '__main__':
    print("圆形的周长是:", yuanxing.girth(10))
    print("矩形的周长是:", juxing.girth(10, 20))

在这里插入图片描述
补充:关于__name__ == 'main’的含义:
用于判断当前模块是被直接运行还是被其他模块导入。
每个模块都有一个内置的 name 属性:
(1)当模块被直接运行时,name 的值为 ‘main’。
(2)当模块被其他模块导入时,name 的值为模块的名称(即文件名,不含 .py)
将juxing.py中的代码修改如下:

def girth(width, height):
    return (width + height) * 2


def area(width, height):
    return width * height


if __name__ == '__main__':
    print(__name__)
else:
    print("被其他模块导入:", __name__)

直接运行juxing.py,运行结果为:
在这里插入图片描述
运行compute.py,运行结果如下:
在这里插入图片描述

(4)import 模块名 as 别名

为模块指定别名,简化访问。

import math_utils as mu

print("两者之和:", mu.add(2, 6))

3、python中的包

包(Package)是组织模块的一种方式,用于将相关的模块按层次结构分组,提高代码的可维护性和复用性。避免命名冲突。
包目录必须包含 init.py 文件(可以为空),用于标识该目录是一个 Python 包。 在 init.py中编写的代码,再导入包时自动执行。
(1)使用包
a、通过“import + 完整包名 ”导入整个包
b、通过"from + 完整包名 + import + 模块名“加载指定的模块
c、通过"from + 完整包名.模块名 + import + 模块名“加载指定的模块
第三方模块的下载与安装:
pip 模块名 install:用于安装第三方模块
pip 模块名 uninstall:用于卸载第三方模块
pip list:用于显示已经安装的第三方模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值