资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Python

模块和包--python基础

Python 更新时间: 发布时间: 计算机考试归档 最新发布

模块和包--python基础

1. 什么是模块

1)模块的英文为:Modules
2) 模块是一个扩展名为“.py”的文件
3) 模块的作用:
(1) 规范代码,易于阅读
(2) 提高开发效率:方便其他程序使用已经编写好的代码
(3) 避免函数名和变量名冲突

2. 自定义模块 2.1 创建模块

1)创建模块实际上就是创建一个.py文件
2)创建的模块名不要与python自带的标准模块名相同
3) 模块中可以包含变量、函数、类

2.2 导入模块

1)导入模块有两种方式:
(1)import语句导入模块
(2) from…import… 语句导入模块
2)在导入模块时,会将所有没有缩进的代码都执行一遍

2.2.1 import 语句导入

(1)使用import语句方式导入,导入模块中所有工具
(2)当模块名较为复杂,可以使用 as 关键字给模块起别名
(3)调用模块中的变量、函数、类时需要在前面加上模块名:模块名.工具
(4) 导入多个模块时,推荐每个导入模块占据一行
语法格式:

import 模块名 [as 别名]


actor = '我最喜爱的演员名是cdm'
print(actor)


def income(income1, income2):
    return income1*0.6+income2*0.8


class Action(object):
    def __init__(self, ac_name, tv_name):
        self.ac_name = ac_name
        self.tv_name = tv_name

    def eval(self, score):
        print('%s  主演的电视剧  [%s],观众评分:  %.1f' % (self.ac_name, self.tv_name, score))


这里也可以看出,虽然掉导入模块时,没有调用actor函数,但是因为导入一个模块时自动执行所有没有缩进的代码,所以,actor函数依然执行了。

2.2.2 使用from … import 语句导入模块

(1) 这种方法导入模块中的部分工具
(2)不需要通过模块名.作为前缀,可以直接使用模块提供的函数、变量和类

这里也可以看出,虽然掉导入模块时,没有调用actor函数,但是因为导入一个模块时自动执行所有没有缩进的代码,所以,actor函数依然执行了。

2.2.3 以主程序形式执行

要想解决上面没有调用actor函数,确执行的情况,可以使用python的内置函数__name__.
在实际开发中,开发人员通常会创建模块后增加一些测试代码,比如actor函数的print(actor),再比如在模块中创建对象测试,但是这些代码在导入模块时是不需要被执行的。

actor = '我最喜爱的演员名是cdm'
print(actor)


def income(income1, income2):
    return income1*0.6+income2*0.8


class Action(object):
    def __init__(self, ac_name, tv_name):
        self.ac_name = ac_name
        self.tv_name = tv_name

    def eval(self, score):
        print('%s  主演的电视剧  [%s],观众评分:  %.1f' % (self.ac_name, self.tv_name, score))


# 作为模块导入时,不需要执行的测试代码
dww = Action('大胃王', 18)
dww.eval(9.2)
print('输出的', __name__)


在调用模块中执行结果:


可以看到,在输入__name__的主程序中执行,输出结果为:main;当作为模块导入其他模块时,输出结果为被导入模块的模块名。
因此,可以通过添加__name__ == 'main’来判断是否在主程序执行,在主程序执行,就输出测试代码,查看代码能够正常运行;而作为模块导入时,不执行测试代码。


actor = '我最喜爱的演员名是cdm'
if __name__ =="__main__":
    print(actor)


def income(income1, income2):
    return income1*0.6+income2*0.8


class Action(object):
    def __init__(self, ac_name, tv_name):
        self.ac_name = ac_name
        self.tv_name = tv_name

    def eval(self, score):
        print('%s  主演的电视剧  [%s],观众评分:  %.1f' % (self.ac_name, self.tv_name, score))

if __name__ =="__main__":
    # 作为模块导入时,不需要执行的测试代码
    dww = Action('大胃王', 18)
    dww.eval(9.2)
    print('输出的', __name__)


导入其他模块时,执行效果:


可以看到并没有输出ac_income中的测试代码。

3. 包

1)包是一个分层次的目录结构,他将一组功能相近的模块组织在一个目录下
2)包具有以下作用:
(1)避免模块名重名引发的冲突
(2) 规范代码
3)包与文件夹的区别
(1) 包简单理解是文件夹,不过,在该文件夹中必须存在一个名为:init.py的文件
4)包的命名方式与变量名一样,命名不符合规范会导致导入包时出现问题

3.1 创建包


在创建python包时,会自动创建__init__.py文件文件
(1)init.py 文件在导入包时会默认加载,自动执行;
(2) 可以将一些初始化的函数、变量、类放在__init__.py文件中

3.2 导入包

导入包与导入模块一样,有两种方法:
1)使用import语句导入包
2)使用from…import…语句导入包

3.2.1 使用import语句导入包


可以看到,当导入包时,还不能使用包中的模块,解决办法:
1)在__init__.py文件中使用

from . import 模块名

导入模块

之后,可以看到,已经可以使用包里面的income模块


2) 使包名.模块名的方式导入

3.2.2 使用from… import 语句导入包

1) 方式一:使用这种方式,调用模块中工具时,需要使用模块名.

from 包名 import 模块名


2) 方式二: 可以直接使用工具名(变量、函数、类名)

from 包名.模块名  import 工具名


3) 方式三: 若要导入包中所有内容,可以使用 *星

from 包名 import *


可以看到,直接使用*导入包中所有内容时,包下的模块无法正常使用,此时需要在
init.py文件中通过__all__函数定义可以通过 * 星 访问的模块名


可以看到,在__init__.py文件中,通过__all__ 定义了可以通过 * 星 访问的模块income,在使用时income模块可以正常使用,但未通过__all__暴漏的actor模块不能正常使用。
4)方式四:加载模块下的全部定义(工具)

from 包名.模块名 import *

4. 第三方模块的下载与安装
pip install md  安装md模块
pip uninstall md 卸载md模块
pip list 查看已安装的第三方模块
help('modules') 查看已有的标准模块和第三方模块
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/982121.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【模块和包--python基础】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2