模块和包(1)

十三、模块与包

13.1 模块

模块定义:保存一些列数据、函数、类的文件,通常以**.py**结尾

模块其实就是文件。

  • 思考:1个项目正常是1个团队完成,那这样肯定不能只有一台电脑,所以站在团队开发的角度下想,一个项目的代码不可能全部到放在一个py文件里面,所以团队可能是动态开发。各自写各自的模块去实现功能。那文件和文件之间就需要互相调用

13.1.1 导入模块

第一种方式import 模块名使用:模块名.成员             成员:函数,变量作用:将某模块整体导入到当前模块中本质: 使用变量名关联模块地址   第二种方式from 模块名 import 成员1,成员2,成员3使用:直接使用成员本质:将指定的成员导入到当前作用域中第三种方式from 模块名 import *  # * 表示全部本质:将指定模块的所有成员导入到当前模块作用域中
  • 注意: 使用放2/方法3的时候,不要与当前模块成员 或者 其他导入模块的成员 名称相同,如果相同则就近原则

    from m1 import f1
    from m2 import f1f1() # 就近原则,使用m2的
    
    from m1 import f1f1() # 使用 m1的f1def f1():print("f1,,,")f1() # 使用当前的f1
    
  • 难道大家都有f1,我就不能同时用吗?利用取别名法

    from m1 import f1
    m1f1 = f1
    from m2 import f1
    m2f1 = f1m1f1()
    m2f1()# 但是这样改名,太麻烦
    
    • 简洁语法
    from m1 import f1 as m1f1 # f1按照名字为m1f1导入作用域
    from m2 import f1 as m2f1 # f1按照名字为m2f1导入作用域取别名:成员 as 别名m1f1()
    m2f1()
    
  • 三种导入到底用哪种?

    用哪个都行,看实际情况来,看习惯来

13.1.2 隐藏成员

指模块中以 下划线开头命名的成员,这种不会被 * 导入,可以称为隐藏成员

module01.py

def f1():print('模块1中的f1')
def _f2():print('模块1中的f2')

module02.py

from module01 import *
f1() # 可以
_f2() # 导入失败

注意:隐藏成员只对 * 隐藏,其他的指定形式可以调用

13.1.3 模块变量

locals(): 查看当前作用域中的 变量字典

其实python变量就是保存在一个字典中的

输出locals()查看当前作用域中的变量,可以发现全局作用域中很多已经存在的变量,这些变量其实就是模块变量。介绍2个常用的

  • __file__ : 输出当前执行模块的 本地路径

  • __name__ :模块自身的名字,可以判断是否为主模块

    当py文件是作为模块被导入的时候执行__name__: 真名
    

当py文件是作为主模块来启动的时候
name: main

  • 特点
    主模块叫做:main
    非主模块叫做:真名

    • 当模块作为入口(主程序运行时) __name__的值是 main
  • 当模块仅仅被导入时运行(模块运行时)__name__的值是 真名

    • 标准语法

      main的标准语法:if __name__ == '__main__':print('作为程序执行的')
      

​    ### 13.1.4 分类模块的分类1. 内置模块:解析器内部可以直接使用的```pythonprint()input()type()... 这些内置函数,都是通过内置模块导入的,这个模块了解即可
  1. 标准库模块:安装python时一起下载的,可以直接导入使用

    import time
    import os
    import random
    .... 可以直接导入使用
    
  2. 第三方模块:通常是开源的,需要自己利用PIP下载

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

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

相关文章

Spring Boot 多环境开发配置详解:Profiles 的使用指南

目录 前言1. Profiles 简介1.1 什么是 Profiles?1.2 Profiles 的应用场景 2. 单文件配置方式2.1 使用三横杠 --- 分隔配置2.2 指定哪个环境的配置生效 3. 多文件配置方式3.1 配置文件的创建与命名3.2 多文件配置的优点 4. Profiles 分组管理4.1 Profile 分组的配置4…

emp.dll文件丢失的几种方法-常见问题

emp.dll文件在Windows系统中扮演着重要的角色,其作用不仅限于单一的应用程序或游戏。以下是emp.dll在系统中的几种作用: 图形渲染与游戏支持:emp.dll可能集成了高效的渲染引擎,支持复杂的3D图形和动画,为玩家提供沉浸…

永久免费!星火大模型接口源码分享(支持上下文、连续对话和历史对话保存)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 星火大模型 📒🌟 接口功能📜 源码分享🎯 使用方法⚓️ 相关链接 ⚓️📖 介绍 📖 你是否在寻找一款国产的、永久免费的大模型接口?想要在自己的项目中轻松集成强大的自然语言处理能力?今天,将为你分享一份免费的星…

小型内衣洗衣机哪个牌子好?五大超值优等品速来围观!

小型洗衣机的存在无疑是懒人的福音,它帮助了许多忙碌的人们解决了洗衣烦恼。尤其对于年龄较小的婴幼儿需要勤换衣、洗衣的时候,它的功能就显得尤为重要了,同时还能够用于清洗大人的内衣裤、袜子这一系列的贴身衣物。小型洗衣机通常用于宿舍、…

取代产品岗,又一新兴岗位在崛起!这才是产品经理未来5年最好的就业方向!

这是我入行产品经理的第1007天: 每天都是整理需求、开会、写文档、协调资源 被开发、运营diss一通,顺便为产品“背个锅” 熬夜加班做出来的产品,业务团队还是不愿意用…… 更让人头秃的是,干了3年,好像到了“职…

打造自己的RAG解析大模型:(可商用)智能文档服务上线部署

通用版面分析介绍 版面解析是一种将文档图像转化为机器可读数据格式的技术,广泛应用于文档管理和信息提取等领域。通过结合OCR、图像处理和机器学习,版面解析能够识别文档中的文本块、图片、表格等版面元素,最终生成结构化数据,大…

Spring

1、Spring框架中单例bean是线程安全的吗? 不是线程安全的。当多用户同时请求一个服务时,容器会给每个请求分配一个线程,这些线程会并发执行业务逻辑。如果处理逻辑中包含对单例状态的修改,比如修改单例的成员属性,就必…

MathGPT的原理介绍,在中小学数学教学的应用场景,以及代码样例实现

大家好,我是微学AI,今天给大家介绍一下MathGPT的原理介绍,在中小学数学教学的应用场景,以及代码样例实现。MathGPT的核心架构是一个精心设计的多层次系统,旨在有效处理复杂的数学问题。其主要组成部分包括 数学知识图谱…

【Linux】man 手册的使用指南

man 手册的使用指南 man手册中文版上传至资源(用心整理,感谢理解!) man手册官方下载链接:https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/ man 手册页:https://linux.die.net/man/ Linux man…

机器学习分析scRNA-seq解析急性髓系白血病中的疾病和免疫过程

急性髓性白血病(AML,Acute myeloid leukemia)是一种存在于复杂微环境中的疾病。作者基于scRNA-seq分析了来自40例骨髓抽吸donor的38,410个细胞,包括16例AML患者和5例健康donor。然后,应用机器学习分类器来区分恶性细胞…

【缓存策略】你知道 Write Back(回写)这个缓存策略吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

1小时构建Vue3知识体系-Vue的响应式,让数据动起来

本文转载自:https://fangcaicoding.cn/course/12/62 大家好!我是方才,目前是8人后端研发团队的负责人,拥有6年后端经验&3年团队管理经验。 系统学习践行者!近期在系统化输出前端入门相关技术文章,期望能…

Docker网络详解

安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host 网络模式简介Host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。Bridge此模式会为每一个容…

宝塔面板部署前端项目(包含ssl证书部署)

环境: ①nginx(这里使用的版本为1.21.41) ②前端项目文件(以根目录打包的文件) ③域名 ④SLL数字证书的key文件和.pem文件(我们这里用的是nginx部署,因此下载证书的时候,下载nginx对…

【区别】ONLYOFFICE心得体会,8.2与8.1区别

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

Equity-Transformer:求解NP-Hard Min-Max路由问题的顺序生成算法(AAAI-24)(未完)

文章目录 AbstractIntroduction问题表述MethodologyAbstract 最小最大路由问题旨在通过智能体合作完成任务来最小化多个智能体中最长行程的长度。这些问题包括对现实世界有重大影响的应用场景,但已知属于NP-hard问题。现有方法在大规模问题上面临挑战,尤其是在需要协调大量智…

ScrumMaster认证机构及CSM、PSM、RSM价值解析

近十年Scrum在国内备受关注,成为一种最流行的现代敏捷工作方式。ScrumMaster这一独特的角色,在企业内部推动Scrum落地的过程中越来越重要。各种ScrumMaster认证课程也蜂拥而至,甚至鱼目混珠。 我们为大家梳理了目前市面上出现的ScrumMaster认…

HLS实现图像二值化

最近在学习HLS语言,所以就自己摸索尝试了用HLS实现了图像二值化,把这个内容总结一下,分享出来。 首先打开HLS,然后新建一个Project,之后再在Source栏点击右键,选择New File...,创建名为pixelBi…

[ 内网渗透实战篇-1 ] 单域环境搭建与安装域环境判断域控定位CS插件装载CS上线

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

通过物流分拣系统来理解RabbitMQ的消息机制

RabbitMQ作为一个消息中间件,通过队列和路由机制,帮助应用程序高效传递消息。而它的消息流转过程,其实可以用物流分拣系统来直观理解。 在一个典型的物流分拣系统中,包裹会经过多个节点(比如分拣中心、配送站&#xf…