当前位置: 首页 > news >正文

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 的变量。

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

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

相关文章:

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

模块和库: 一个python代码文件就实现了功能。功能比较单一。 在企业中,项目开发的文件,可能有成百上千个。 不同的代码文件,实现了不同的功能模块,就像一块块积木一样。这些功能文件整合起来,实现一个完…...

SystemVerilog Assertions应用指南 第一章(1.28章节 内建的系统函数)

SVA提供了几个内建的函数来检查一些最常用的设计条件。 $onehot(expression)—检验表达式满足“one-hot”,换句话说,就是在任意给定的时钟沿,表达式只有一位为高。 $onehot0( expression)—检验表达式满足“ zero one-hot”,换句话说,就是在任意给定…...

正则表达式(自用)

正则表达式 符号概述 分类符号用法示例元字符^以 ***开头$以 ***结尾d匹配数字s匹配任意的空白符.匹配除换行符以外的任意字符w匹配字母或数字或下划线或汉字\转义重复限定符*次数,至少一次至少1次?0次 或者 1次{n}{n,}{n,m}重复n次;n活更多次&#x…...

大厂真题:【模拟】OPPO2023秋招提前批-小欧数组求和

题目描述与示例 题目描述 小欧拿到了一个数组,她有q次操作,每次操作修改一个元素。小欧希望每次修改后得到当前数组所有元素之和。你能帮帮她吗? 输入描述 第一行输入两个正整数n和q,代表数组的大小和操作次数。 第二行输入n…...

Python括号匹配问题

给定一个只包含小写字母的字符串,判断该字符串中的括号是否闭合,如果每个左括号都有对应的右括号,并且括号的嵌套顺序正确,那么括号就能正确闭合。 否则,括号不能正确闭合,字符串中括号仅限于 "("…...

微信小程序备案内容常见问题汇总

一、备案时间点 自2023年09月01日起,新的微信小程序,必须备案后才能上架; 在2024年03月31日前,所有小程序都必须完成备案; 于2024年04月01日起,对未备案小程序进行清退处理。 微信小程序备案系统已于9月4日上线。 二、备案流程 [找备案入口]–[填主体信息]–[填小程…...

无人机新手防炸飞行技巧

不要在室内飞行,容易撞墙。起飞前设置好避障和返航模式。使用模拟器熟练掌握操控。选择开阔环境目视起飞。使用低速档平稳飞行。合理使用避障功能,不要盲目依赖。使用九宫格避障法。留意电量,及时返航。极低电量时放弃强行返航。飞行后及时为电池充电保养。...

webrtc opus 音频编码支持SILK和CELT模式

SILK CELT是指将SILK编解码器和CELT编解码器结合在一起的混合音频编码方案。 SILK(Super-wideband audio coding)是一种低延迟的音频编解码器,用于实时的语音通信。它提供高质量的音频传输,并且适用于各种比特率和带宽条件。SILK…...

掌握Python爬虫实现网站关键词扩展提升曝光率

目录 一、关键词优化的重要性 二、关键词优化的基本方法 1、选择与网站内容相关的关键词 2、控制关键词的密度和分布 3、关键词的层次布局 三、Python爬虫实现网站关键词扩展 1、确定目标网站 2、分析目标网站的HTML结构 3、编写Python爬虫代码 4、分析爬取到的关键词…...

ajax实现原理

网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面。这使得程序能够更快地回应用户的操作 Ajax的实现原理 创建Ajax对象 传入请求方式和请求地址 发送请求 获取服务器与客户端的响应数据 xhr.responseText // 1…...

图G的拉普拉斯矩阵为什么由L=D-A定义

图G的拉普拉斯矩阵由LD-A定义,其中D是度矩阵(Degree Matrix),A是邻接矩阵(Adjacency Matrix)。这种定义方式有以下原因: 1. 度矩阵D:度矩阵是一个对角矩阵,其对角线上的…...

实习项目遇到的bug

问题1: 大概是因为没设置ts类型,它查不到的问题,不定义的话加上问号,加上可选链就不会报错了 {{bizEquipmentInfo.lastUnlockingVO?.lastUnlockingTime.replace(T, )? bizEquipmentInfo.lastUnlockingVO?.lastUnlockingTime.r…...

python selenium下载一个合适的chromedriver.exe(稳定版本)

可以使用该脚本来进行下载: 下载前需要安装如下的依赖 requests2.27.1 selenium4.14.0 webdriver_manager4.0.1下载脚本代码: import json import subprocess import shutil import os import time import zipfileimport requests from webdriver_mana…...

RabbitMQ从0到1完整学习笔记一:《基础篇》

目录 启篇 一、初识MQ 1.1 同步调用 1.2异步调用 1.3 技术选型 二、RabbitMQ 架构 2.2 收发消息 2.2.1 交换机 2.2.2 队列 2.2.3 绑定关系 2.2.4 发送消息 2.3 数据隔离 2.3.1 用户管理 2.3.2 virtual host 三、SpringAMQP 3.1 案例入门 3.1.1 导入依赖 3.1.2 消息发送 3.1.2 消…...

什么是时间冒泡?

时间冒泡是指当一个元素触发一个事件时,事件会像水泡一样,从触发元素向它的所有父节点传播,一直到根节点都会接收到此事件 1。如果父元素中注册了相应的事件处理函数,那么尽管事件在子节点触发的,在父元素上注册的事件…...

Go语言入门心法(三): 接口

Go语言入门心法(一) Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 一:go语言接口认知 Go语言中接口认知升维:解决人生问题的自我引导法则: 复盘思维|结构化思维|金字塔思维|体系化思维|系统化思维 面向对象编程(oop)三大特性: 封装,继承,多态 Go语言中,可…...

leetcode:210. 课程表 II

课程表 II 提示 中等 889 相关企业 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。 例如,想要学习课程…...

[MT8766][Android12] 使用谷歌LPA实现ESIM功能的流程

文章目录 开发平台基本信息问题描述实现流程 其他问题 开发平台基本信息 芯片: MT8766 版本: Android 12 kernel: msm-4.19 问题描述 客户需要我们设备支持ESIM功能,5月份的时候在高通6125上面预研过ESIM功能,当时ESIM供应商是Links field&#xff0c…...

MyBatis-Plus为简化开发而生

简介 MyBatis-Plus 简称 MP是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 他们的愿景是成为 MyBatis 最好的搭档,就像魂斗罗中的 1P、2P,基友搭配,效率翻倍。 特性 无…...

【翻译】Efficient Data Loader for Fast Sampling-Based GNN Training on Large Graphs

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 此内容为机器翻译的结果,若有异议的地方,建议查看原文。 机器翻译的一些注意点,比如: 纪元、时代 > epoch工人 > worker火车、培训、训练师 > train Effic…...

Video2X:用AI魔法将低分辨率视频变成4K超清大片的终极指南

Video2X:用AI魔法将低分辨率视频变成4K超清大片的终极指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…...

春联生成模型快速上手:输入‘幸福‘、‘平安‘等关键词,自动生成对仗工联

春联生成模型快速上手:输入幸福、平安等关键词,自动生成对仗工联 1. 春联生成器简介 春节贴春联是中国人延续千年的传统习俗,但创作一副对仗工整、寓意吉祥的春联并不容易。现在,借助AI技术,任何人都能轻松生成专业水…...

ChatGPT_JCM大型应用架构:处理复杂需求的前端解决方案

ChatGPT_JCM大型应用架构:处理复杂需求的前端解决方案 【免费下载链接】ChatGPT_JCM 项目地址: https://gitcode.com/gh_mirrors/ch/ChatGPT_JCM ChatGPT_JCM是一个基于前端技术构建的大型AI应用解决方案,专为处理复杂交互需求和提供流畅用户体验…...

别再只盯着芯片手册了!用CC6902SO搭建电流检测电路,这些实测数据和避坑经验更重要

别再只盯着芯片手册了!用CC6902SO搭建电流检测电路,这些实测数据和避坑经验更重要 第一次用CC6902SO搭建电流检测电路时,我完全按照芯片手册推荐的电路设计,结果发现实际输出和理论值差了将近15%。这让我意识到,真正影…...

Wan2.2-I2V-A14B图像转视频实战:基于卷积神经网络的风格迁移与动态生成

Wan2.2-I2V-A14B图像转视频实战:基于卷积神经网络的风格迁移与动态生成 1. 引言:当静态艺术遇见动态魔法 想象一下,你手中有一幅精美的水墨画或一张概念设计草图,如果能让它"活过来",变成一段流动的视频&a…...

如何用Reset Windows Update Tool一键解决Windows更新故障的终极指南

如何用Reset Windows Update Tool一键解决Windows更新故障的终极指南 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update-Tool 你是否曾…...

AI头像生成器开发者必备:GitHub项目管理核心技巧详解

AI头像生成器开发者必备:GitHub项目管理核心技巧详解 1. 引言:为什么GitHub对AI头像生成器项目至关重要 开发一个AI头像生成器项目时,你是否遇到过这些挑战:团队成员同时修改同一文件导致冲突、新功能上线后出现意外bug却无法快速…...

影墨·今颜GPU算力适配:RTX 4090单卡实测每秒1.8张1024x1536图

影墨今颜GPU算力适配:RTX 4090单卡实测每秒1.8张1024x1536图 1. 引言:当顶级AI影像遇上顶级显卡 如果你是一位内容创作者,或者对AI生成人像有浓厚兴趣,那么“影墨今颜”这个名字最近可能已经进入了你的视野。它被描述为一款融合…...

3步实现视频硬字幕精准提取:本地化多语言解决方案如何解决你的字幕难题

3步实现视频硬字幕精准提取:本地化多语言解决方案如何解决你的字幕难题 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区…...

intv_ai_mk11效果实测报告:在中文技术问答、创意写作、逻辑推理三维度得分分析

intv_ai_mk11效果实测报告:在中文技术问答、创意写作、逻辑推理三维度得分分析 1. 测试背景与模型介绍 intv_ai_mk11是一款基于Llama架构的AI对话机器人,拥有7B参数规模,专门针对中文场景优化。本次测试将从三个核心维度评估其实际表现&…...