Python学习基础笔记七十——模块和库1

模块和库:

一个python代码文件就实现了功能。功能比较单一。

在企业中,项目开发的文件,可能有成百上千个。

不同的代码文件,实现了不同的功能模块,就像一块块积木一样。这些功能文件整合起来,实现一个完整的软件。

在python中,一个代码文件,也就是一个.py文件,我们也叫它一个模块(module)。

a.py 文件,我们称之为模块a。

b.py文件,我们称之为模块b。

模块就是代码文件的意思。

模块之间的调用:

那么代码模块之间是怎么互相联系的呢?

案例:输入总费用和聚餐人数,计算人均费用的功能。单独实现一个模块文件aa.py

fee = input('请输入午餐费用: ')
members = input('请输入聚餐人员姓名,以英文逗号,分隔:')memberlist = members.split(',')headcount = len(memberlist)avgfee = int(fee) / headcountprint(avgfee)

放到列表中,是为了得到人数。 

但是,我们需要将每次账单记录到文件中,这样才能定期进行结算。

我们可以创建另外一个模块文件save.py, 在里面定义一个函数,该函数实现记录消费信息到文件的功能。

def savetofile(memberlist, avgfee):with open('record.txt', 'a', encoding='utf8') as f:recorditem = [f'{member}:{avgfee}' for member in memberlist]f.write(' | '.join(recorditem) + '\n')

聚餐人数的列表和平均费用。

a是文件的追加模式。

通过列表推导式,产生    人员列表:平均费用  这样的列表项。

然后还使用了|分隔符。

就这段代码,也有很多内容值得我们学习的。

现在aa.py和save.py两个模块文件。

方法一:

在aa.py里面通过import关键字导入模块save。

import save

导入save模块。模块文件对象。

导入后,save模块就成为模块aa中的一个变量,对应一个模块对象。

模块也是一个对象。

save.savetofile(memberlist, avgfee)

使用save模块中里面的savetofile函数。

到save模块找savetofile的名字,这个名字对应的是一个函数。

方法二:

还可以在aa.py里面通过from import 关键字导入其他模块里的标识符(或者是变量名或者是函数名等。)

from save import savetofile

导入之后,这些其他模块的变量名和函数名就称为模块aa 里面的变量名、函数名了。

这样,我们就可以直接使用它们了。

完整代码:

from save import savetofilefee = input('请输入午餐费用: ')
members = input('请输入聚餐人员姓名,以英文逗号,分隔:')memberlist = members.split(',')headcount = len(memberlist)avgfee = int(fee) / headcountprint(avgfee)savetofile(memberlist, avgfee)

一些技巧:

1)如果在一些模块文件中需要导入多个其他模块文件,可以分开写导入语句。

import aa
import bb
import cc

也可以一起导入:

import aa, bb, cc

2)如果我们要从1个模块中导入多个标识符:

from aa import func1, var1, func2, var2

3)如果到导入的1个模块中有很多个标识符:

from aa import *

通配符,把aa模块中所有可以导入的对象全部都导入了。

4)如果从两个模块中导入函数,恰好两个函数是同名的,那么我们可以使用别名。

from save import savetofile
from save2 import savetofile as savetofile2

当一个b模块从a模块导入了名字 var1 后,注意,b模块和a模块 是 各自有一个 名为 var1 的变量 , 而不是两个模块共享一个 名为 var1 的变量。

如果要在多个模块中共享同一个数据对象,并且这个数据对象的值将来可能会改变。

即使共享的只是一个数字或者字符串变量, 也应该放在一个值可以变动的对象类型中。 比如:列表, 或者后面要学习的 字典 和 自定义类型。

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

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

相关文章

javascript将html中的dom元素转图片

javascript将html中的dom元素转图片 百度网盘下载html2canvas.min.js&#xff1a; 全部文件-》js插件-》 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>网页中的某个区域转图片</title></head><body styl…

Django 使用Mysql数据库

目录 Django 使用Mysql数据库本地安装Mysql数据服务安装好Pymysql服务Django配置数据库迁移各种报错无法找到mysqlclient数据库拒绝连接 Django 使用Mysql数据库 本地安装Mysql数据服务 安装好Pymysql服务 python3 -m pip install PyMySQL官方文档介绍 Django配置 官网文档 …

Ubuntu中不能使用ifconfig命令

​ 问题 打开终端使用如下命令不能运行&#xff1a; ifconfig显示如下错误: 解决方法 在VMware中的虚拟机下面打开“编辑虚拟机设置”&#xff0c;或者在已经打开的虚拟机面板上面打开“虚拟机—设置” 选择网络适配器&#xff0c;选择“NAT模式”&#xff0c;没开机的就…

微软10月补丁 | 修复103个漏洞,包括2个零日漏洞,13个严重漏洞

近日&#xff0c;微软发布了2023年10月的补丁更新&#xff0c;解决了其软件中的103个漏洞。 在这103个漏洞中&#xff0c;有13个的评级为严重漏洞&#xff0c;90个被评为重要漏洞。自9月12日以来&#xff0c;谷歌已经解决了基于chrome的Edge浏览器的18个安全漏洞。 这两个零日…

第一个C++程序

1.include指令 也称包含指令&#xff0c;可根据文件名将文件内容包含进来。包含文件类型有.h头文件、.c, .cpp ,.txt等编译器能识别的代码文件。 2.头文件 C程序头文件是以.h为后缀&#xff0c;但在文件包含时规定要去掉.h后缀&#xff0c;放入std名字空间中 若头文件是C也有…

在不安全的集群上启用 Elasticsearch Xpack 安全性

本博文详细描述如何把一个没有启动安全的 Elasticsearch 集群升级为一个带有 HTTPS 访问的启用 Elasticsearch xpack 安全的集群。 为了增强 Elasticsearch 集群的安全性&#xff0c;你需要执行完全集群重启&#xff0c;并在客户端进行一些更改。 启用身份验证后&#xff0c;所…

YOLOv5算法改进(19)— Neck网络介绍(AFPN和BiFPN)

前言:Hello大家好,我是小哥谈。Neck网络是目标检测中的一个重要组成部分,主要用于对检测器提取的特征进行进一步处理和融合,以提高检测精度。通常,Neck网络由一系列卷积层、池化层、上采样层等组成,可以将不同层次的特征进行融合,同时也可以对特征进行降维和升维操作。本…

【Rust】包和模块,文档注释,Rust格式化输出

文章目录 包和模块包 CrateRust 的标准目录结构 模块 Module用路径引用模块使用super引用模块使用self引用模块结构体和枚举的可见性 使用 use 引入模块及受限可见性基本引入方式绝对路径引入模块相对路径引入模块中的函数 避免同名引用 注释和文档文档注释包和模块级别的注释注…

【Java学习之道】线程的创建与启动

引言 如果你正在学习Java编程&#xff0c;那么你可能已经知道Java是一种多线程编程语言。多线程编程可以帮助我们更高效地利用CPU&#xff0c;同时完成多项任务。但是&#xff0c;你可能还不知道如何在Java中创建和启动线程。在本节中&#xff0c;我们将深入探讨Java中的线程创…

Windows下Qt读取系统的内存、CPU、GPU等使用信息

一、前言 在当今计算机应用广泛的领域中&#xff0c;了解系统的内存、CPU和GPU使用情况是非常重要的。对于开发人员和系统管理员来说&#xff0c;准确获取这些信息可以帮助他们优化软件性能、诊断问题并做出相应的调整。在Windows平台上实现这一目标会涉及到调用Windows系统AP…

基于springboot实现心灵治愈心理健康平台系统项目【项目源码+论文说明】

基于springboot实现心灵心理健康平台系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个心灵治愈交流平台 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论…

【SOA-KELM分类】基于海鸥算法优化核极限学习机分类研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

C++智能指针(二)——weak_ptr初探

文章目录 1. shared_ptr 存在的问题2. 使用weak_ptr2.1 初始化 weak_ptr2.2 访问数据 3. 附录4. 参考文献 1. shared_ptr 存在的问题 与 shared_ptr 的引入要解决普通指针存在的一些问题一样&#xff0c;weak_ptr 的引入&#xff0c;也是因为 shared_ptr 本身在某些情况下&…

040:mapboxGL鼠标hover更换选中feature颜色

第040个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中通过鼠标hover的方式来更换选中feature颜色。这里面利用了mousemove和mouseleave的方法,通过选中图层的feature,来设置hover的true或者false,从而通过opacity的case状态来判断透明度用哪一个值。 直接复…

微信小程序备案流程操作详解

1、2023年9月1号小程序开始必须备案了,各位小程序商城只需要按流程自主去微信小程序后台操作即可; 2、对未上架的微信小程序,从2023年9月1号开始需先备案才能上架; 3、对存量已上架的小程序,需在2024年3月31号前完成备案即可。逾期未完成备案,平台将按照备案相关规定于…

kafka安装步骤以及初步入门

安装Java sudo apt install default-jdk # 执行完直接直接查看版本就好了 java -versionhttps://blog.csdn.net/CyberSparkZ/article/details/132441191 安装zookeeper https://blog.csdn.net/supercrsky/article/details/124570611 https://blog.csdn.net/xiaozhang_man/ar…

Vue-2.9单页应用程序

单页应用程序&#xff08;SPA-Single Page Application&#xff09; 所有功能在一个html页面上实现 具体示例&#xff1a;网易云音乐https://music.163.com 京东淘宝等是多页面应用 单页VS多页 单页面应用&#xff1a;系统类网站、内部网站、文档类网站、移动端站点 多页面…

红队专题-Cobalt strike 4.x - Beacon重构

红队专题 招募六边形战士队员重构后 Beacon 适配的功能windows平台linux和mac平台C2profile 重构思路跨平台功能免杀代码部分sysinfo包packet包config.go命令的执行shell、run、executepowershell powerpick命令powershell-importexecute-assembly 堆内存加密字符集 招募六边形…

云原生安全应用场景有哪些?

当今数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一&#xff0c;而云计算作为企业数字化转型的关键技术&#xff0c;其安全性也日益受到重视。随着云计算技术的快速发展&#xff0c;云原生安全应用场景也越来越广泛&#xff0c;下面本文将从云原生安全应用场景出发&a…

深入了解桶排序:原理、性能分析与 Java 实现

桶排序&#xff08;Bucket Sort&#xff09;是一种排序算法&#xff0c;通常用于将一组数据分割成有限数量的桶&#xff08;或容器&#xff09;&#xff0c;然后对每个桶中的数据进行排序&#xff0c;最后将这些桶按顺序合并以得到排好序的数据集。 桶排序原理 确定桶的数量&am…