【python】模块与包

news2024/12/23 9:27:55
        Python中的模块和包是组织和管理代码的重要工具。通过模块和包,你可以更好地管理和重用你的代码,使得代码更加模块化和可维护。

目录

前言

正文

一、模块

        1、模块的分类

                1)内置模块

                        python解释器中默认拥有的模块可以直接使用(如:os、random)

                2)第三方模块

                3)自定义模块

        2、模块的使用

                1)import 模块名 as 别名

                        2)from 模块名 import 函数名 

                        3)两种方式的优劣

二、包

        1、创建一个包

        2、包的使用,和模块的导入是一样的

三、内置变量__name__

总结


前言

        在一个文件中为了实现某些功能代码将会越来越长,这样就会导致代码的维护性以及可读性较差。为了避免这种情况,我们可以将不同的函数(功能)进行分类,放在不同的文件里,这样每个文件的代码相对较少。更利于我们进行代码的管理。


正文

一、模块

        模块是一系列功能(函数)的集合体

        1、模块的分类

                1)内置模块
                        python解释器中默认拥有的模块可以直接使用(如:os、random)
                2)第三方模块

                        由其他大佬写好的模块,需要到网上下载(如:requests、pandas)

                        下载方式:在终端中输入命令pip install 模块名 -i [镜像源]

                3)自定义模块

                        自己写的模块,模块名称需要遵循标识符的规定

        2、模块的使用

        先导入模块同一个模块只需要导入一次,通常是把导入模块的代码放在文件的开头导入后,可以在程序的任意地方使用模块里的功能。导入一个模块时模块中的代码会被执行一遍。

                1)import 模块名 as 别名

                        该方式会导入模块中的所用功能,可以通过模块名调用该模块中的所有函数

                        作用:导入模块中的所有内容

                        别名:当模块名太长时,可以通过as来重命名

例:

模块login.py中的内容

# 这是一个用于检查用户名与密码是否正确的的模块
def Login():
    user = input('请输入用户名:')
    password = input('请输入密码:')
    if user == '写代码也摆烂':
        if password == '123':
            return True
    return False

# 用于输出登入是否成功
def Login_TF(buer):
    if buer:
        print('登入成功')
    else:
        print('用户名或密码错误')

 main.py中的内容

# 这里是主文件
# 使用import直接调用调用登入模块
import login
# 该方式会导入模块中的所用功能,可以通过模块名调用该模块中的所有函数

print('调用login.Login()的结果')

print(login.Login())

print('调用login.Login_TF(login.Login())的结果')

login.Login_TF(login.Login())

# 对模块名进行重命名
import login as lg

print('重命名后调用lg.Login()的结果')

print(lg.Login())

运行main.py结果:

                2)from 模块名 import 函数名 

                        该方法是是用于指定导入模块中的功能/变量

                        作用:导入模块中指定的功能

                3)两种方式的优劣

                                优:使用import导入可以直接使用模块中的所有函数较为方便,使用form导入可以针对性的导入自己需要使用的函数, 所需要占用的资源少

                                劣:import直接导入所用功能,会占用较多的资源且模块中大部分的函数不会被使用到。使用from导入如果需要使用较多的函数时会比较麻烦

二、包

        如果说模块是功能(函数的集合体),那么包就是模块的集合体,它的作业与模块类似,不过它是用来对模块进行分类的。

        1、创建一个包

                步骤:new--python package(包的命名遵守标识符的规定)

                一个包本质上是一个包含了一些模块和一个特殊的 __init__.py 文件的目录。、

                __init__.py :导包的时候会自动执行init文件里

        2、包的使用,和模块的导入是一样的

        语法:import 包名.模块名

                  from 包名 import 模块名

                  from 包名.模块名 import 函数名/变量名

三、内置变量__name__

         当 Python 解释器加载一个模块时,它会将该模块的名称赋值给 __name__ 变量。如果模块是主程序,Python 解释器会将 __name__ 设置为 "__main__";否则,如果模块是被导入的,__name__ 就是模块的名称。

作为主程序运行时:

 作为模块被引用时(导入一个模块时模块中的代码会被执行一遍):

         该变量常用于判断一个文件是被直接执行还是被导入到另一个文件中执行。通常用于测试模块中的功能是否能正常使用。

# 这是一个用于检查用户名与密码是否正确的的模块
def Login():
    user = input('请输入用户名:')
    password = input('请输入密码:')
    if user == '写代码也摆烂':
        if password == '123':
            return True
    return False


if __name__ == '__main__':
    # 判断该文件是否被直接执行,如果是则执行以下代码
    # 以下代码用于测试该文件中的函数是否能正常使用
    # 如果该文件被当作模块来调用则不会执行以下代码
    print(__name__)
    Login()

直接运行该文件(运行了if中的语句):

 

 调用该文件(没有执行if中的语句):


总结

       多个数据放在一起称为 列表、元组、字典、集合等

        多个语句放在一起完成一个功能,称为函数

        多个函数放在一起,称为模块

        多个模块放在一起,称为包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1657623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

守护数字疆域:2024年网络安全报告深度解读

在这个数据如潮涌动的数字时代,每一比特信息都可能是攻防双方角力的战场。《Check Point 2024年网络安全报告》不但为我们揭示了过去一年网络安全世界的风云变幻,更以前瞻性的视角勾勒出未来的挑战与机遇。此刻,让我们携手深潜这份权威指南的…

Offer必备算法37_记忆化搜索_五道力扣题详解(由易到难)

目录 记忆化搜索概念和使用场景 ①力扣509. 斐波那契数 解析代码1_循环 解析代码2_暴搜递归 解析代码3_记忆化搜索 解析代码4_动态规划 ②力扣62. 不同路径 解析代码1_暴搜递归(超时) 解析代码2_记忆化搜索 解析代码3_动态规划 ③力扣300. 最…

对时间序列异常检测的严格评价

论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/20680 论文源码:无 会议:The Thirty-Sixth AAAI Conference on Artificial Intelligence 这篇论文名为《Towards a Rigorous Evaluation of Time-Series Anomaly Detection》&a…

Java毕设之基于SpringBoot的在线拍卖系统

运行环境 开发语言:java 框架:springboot,vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7,8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) 系统详细设计 管理员功能模块 管理员登录,管理员通过输入用户名、密码、角色等信…

网络新手如何上手水牛社软件?我的建议与看法

水牛社是一款专为电脑用户设计的软件,拥有明确的著作权,其核心功能在于发布和整合各类网络活动任务资源、教程等,内容多元且不设固定分类。其靠谱程度取决于你对软件的了解程度和个人需求的适配性。 软件内部包含五个主要栏目,大…

前端开发攻略---打破Chrome的最小字号限制,设置任意字号大小

目录 1、原因 2、解决方法 1、原因 由于Chrome浏览器的限制,在网页中的字号默认最小为12px,更改为12px以下的字号大小是无效的 2、解决方法 1、在Chrome浏览器中调整字号最小值 优点:快,方便, 缺点:只对自…

【C++】详解STL容器之一的deque和适配器stack,queue

目录 deque的概述 deque空间的结构 deque的迭代器 deque的数据设计 deque的优缺点 适配器的概念 ​编辑 stack的概述 stack的模拟实现 queue的概述 queue的模拟实现 deque的概述 deque的设计参考了另外两大容器vector和list。可参考下面两篇文章 详解vector&#x…

python:画折线图

import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties# 设置新宋体字体的路径 font_path D:/reportlab/simsun/simsun.ttf# 加载新宋体字体 prop FontProperties(fnamefont_path)""" # 读取 xlsx 文件 d…

API低代码平台介绍2-最基本的数据查询功能

最基本的数据查询功能 本篇文章我们将介绍如何使用ADI平台定义一个基本的数据查询接口。由于是介绍平台具体功能的第一篇文章,里面会涉及比较多的概念介绍,了解了这些概念有助于您阅读后续的文章。 ADI平台的首页面如下: 1.菜单介绍 1.1 O…

交友软件源码-源码+搭建+售后,上线即可运营聊天交友源码 专业语聊交友app开发+源码搭建-快速上线

交友小程序源码是一种可以帮助开发者快速搭建交友类小程序的代码模板。它通常包括用户注册、登录、个人信息编辑、匹配推荐、好友聊天等常见功能,以及与后台数据交互的接口。使用这种源码可以极大地缩短开发时间,同时也可以根据自己的需求进行二次开发和…

代码随想录算法训练营DAY45|C++动态规划Part7|70.爬楼梯(进阶版)、322. 零钱兑换、279.完全平方数

文章目录 70.爬楼梯(进阶版)⭐️322. 零钱兑换思路CPP代码总结 279.完全平方数思路CPP代码 70.爬楼梯(进阶版) 卡码网:57. 爬楼梯 文章讲解:70.爬楼梯(进阶版) 本题就是典型了完全背包排列问题,…

光峰科技2023年营收、净利润均双位数下滑,新一年延续?

近日,深圳光峰科技股份有限公司(688007.SH,下称“光峰科技”)对外公布了2023年和2024年一季度的经营“成绩单”。 透视财报不难看出,虽然光峰科技在降低成本、提振销售等层面下足了功夫,但受制于市场需求式…

交易复盘-20240509

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 百合花 (4)|[9:25]|[17717万]|1.93 时代万恒…

【SpringBoot记录】自动配置原理(1):依赖管理

前言 我们都知道SpringBoot能快速创建Spring应用,其核心优势就在于自动配置功能,它通过一系列的约定和内置的配置来减少开发者手动配置的工作。下面通过最简单的案例分析SpringBoot的功能特性,了解自动配置原理。 SpringBoot简单案例 根据S…

5.9gunplot绘图堆叠柱状图

gunplot绘图堆叠柱状图 plot"要用的数据(后缀名是.dat)" using 2 t(或者title) 跟着是要命名的属性名称 这个名称可以用.dat里的每列列名,也可以直接在后面跟着定义 plot "data.dat" using 2 t columnheader(2), using 3 t column…

【websocket-客户端可视化工具】

postman 新版postman (版本v11以上) ,除了http协议,还支持了Websocket,MQTT,gRPC等多种连接协议,可以作为多种协议的客户端,使用起来非常方便。 使用 服务端代码 这里以websocket协议举例,代…

2023-2024年家电行业报告合集(精选51份)

家电行业报告/方案(精选51份) 2023-2024年 报告来源:2023-2024年家电行业报告合集(精选51份) 【以下是资料目录】 空气炸锅出海品牌策划创意全案【家电出海】【品牌全案】 卡萨帝潮流消费品生活家电音乐节活动方案…

【Python】了解卡方检验方法及其应用

是否幸福轻得太沉重 过度使用不痒不痛 烂熟透红空洞了的瞳孔 终于掏空终于有始无终 得不到的永远在骚动 被偏爱的都有恃无恐 玫瑰的红容易受伤的梦 握在手中却流失于指缝 又落空 🎵 陈奕迅《红玫瑰》 卡方检验(Chi-square test&…

大数据手册(Spark)--Spark 简介

Spark 简介 Apache Spark 是一种用于大数据工作负载的分布式开源处理系统。它使用内存中缓存和优化的查询执行方式,可针对任何规模的数据进行快速分析查询。Apache Spark 提供了简明、一致的 Java、Scala、Python 和 R 应用程序编程接口 (API)。 Apache Spark 是专…

Java毕设之基于springboot的医护人员排班系统

运行环境 开发语言:java 框架:springboot,vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7,8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) 系统详细实现 医护类型管理 医护人员排班系统的系统管理员可以对医护类型添加修改删除以及…