Python学习笔记(三)
文章目录
- Python函数详解
- 基本概念
- 定义函数
- 函数调用
- 参数类型
- 1. 位置参数
- 2. 默认参数
- 3. 关键字参数
- 4. 可变参数
- 返回值
- 函数作用
- 函数中的变量
- 作用域规则
- 递归函数
- Lambda函数
- 函数注解
- 装饰器
- 文档字符串
- 其他重要概念
- 闭包
- 生成器函数
- 高阶函数
Python函数详解
基本概念
函数是Python中组织和重用代码的基本方式,它是一段具有特定功能的、可重复使用的代码块。
定义函数
使用def
关键字定义函数:
def function_name(parameters):"""函数文档字符串"""# 函数体return value
函数调用
result = function_name(arguments)
参数类型
1. 位置参数
按照定义顺序传递的参数
def add(a, b):return a + b
2. 默认参数
参数有默认值,调用时可省略
def greet(name="World"):print(f"Hello, {name}!")
a = input() //输入“world”
greet(a)
输出:
Hello, world!
3. 关键字参数
调用时指定参数名,可不按顺序
def person_info(name, age):print(f"{name} is {age} years old")person_info(age=25, name="Alice")
4. 可变参数
*args
:接收任意数量的位置参数(元组)**kwargs
:接收任意数量的关键字参数(字典)
def print_info(*args, **kwargs):print("位置参数:", args)print("关键字参数:", kwargs)
返回值
函数使用return
返回值,可返回多个值(实际上是元组)
def calculate(a, b):return a+b, a-b, a*bsum_result, diff_result, prod_result = calculate(10, 5)
("return" 这个概念起源于计算机科学,最初用于指示一个函数执行完毕并将结果返回给调用它的地方。在编程语言中,我们可以通过使用 "return" 关键字来返回函数的执行结果。当函数执行到 "return" 语句时,它会立即停止执行并将指定的结果返回给调用者。这使得我们可以在程序中使用函数来执行特定的操作,并在需要的时候获取到函数执行的结果进行后续处理。因此,"return" 在编程中扮演着非常重要的角色,用于控制函数的执行流程和提供结果输出。)
函数作用
- 代码重用:避免重复编写相同代码
- 模块化:将复杂问题分解为小功能块
- 提高可读性:通过有意义的函数名使代码更易理解
- 便于维护:修改只需在函数内部进行
函数中的变量
作用域规则
- 局部变量:函数内部定义的变量,只在函数内有效
- 全局变量:函数外部定义的变量,函数内需用
global
声明才能修改 - 非局部变量:嵌套函数中,用
nonlocal
声明外层函数的变量
nonlocal 是 Python 中的一个关键字,用于在嵌套函数中声明一个变量既不是当前函数的局部变量,也不是全局变量,而是属于外层(非全局)作用变量。它允许内层函数修改外层函数中定义的变量。
nonlocal 只能在嵌套函数中使用。 如果外层函数没有对应的变量,会抛出 SyntaxError。
x = 10 # 全局变量def outer():y = 20 # 非局部变量def inner():nonlocal y # 声明 y 是外层函数的变量global x #用于声明修改全局变量z = 30 # 局部变量y += 1 # 修改外层函数的变量x += 1
Python 的变量查找遵循 LEGB 规则(Local → Enclosing → Global → Built-in),nonlocal 的优先级介于 Local 和 Enclosing 之间。
递归函数
函数调用自身来解决问题,必须包含:
- 基线条件(终止条件)
- 递归条件(调用自身)
def factorial(n):if n == 1: # 基线条件return 1else: # 递归条件return n * factorial(n-1)
Lambda函数
匿名函数,用于简单操作,语法:lambda 参数: 表达式
# 普通函数
def square(x):return x ** 2# Lambda等价形式
square = lambda x: x ** 2# 常用场景
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers))
上述常用场景代码解释
函数注解
Python 3的类型提示功能(不强制类型检查):
def add(a: int, b: int) -> int:return a + b
装饰器
修改或增强函数功能的工具:
def timer(func):def wrapper(*args, **kwargs):start = time.time()result = func(*args, **kwargs)end = time.time()print(f"函数 {func.__name__} 执行时间: {end-start:.2f}秒")return resultreturn wrapper@timer
def long_running_function():time.sleep(2)
代码解释
文档字符串
函数的说明文档,可通过help()
或__doc__
访问:
Python函数的说明文档的访问方式
def add(a, b):"""计算两个数的和参数:a (int/float): 第一个加数b (int/float): 第二个加数返回:int/float: 两个数的和示例:>>> add(2, 3)5"""return a + b
其他重要概念
闭包
函数记住并访问其词法作用域的能力:
def outer_func(x):def inner_func(y):return x + yreturn inner_funcclosure = outer_func(10)
print(closure(5)) # 输出15
生成器函数
使用yield
返回值的特殊函数:
def count_up_to(max):count = 1while count <= max:yield countcount += 1counter = count_up_to(5)
for num in counter:print(num)
高阶函数
接受函数作为参数或返回函数的函数:
def apply_operation(func, x, y):return func(x, y)result = apply_operation(lambda a, b: a * b, 3, 4)
相关文章:
Python学习笔记(三)
文章目录 Python函数详解基本概念定义函数函数调用参数类型1. 位置参数2. 默认参数3. 关键字参数4. 可变参数 返回值函数作用函数中的变量作用域规则 递归函数Lambda函数函数注解装饰器文档字符串其他重要概念闭包生成器函数高阶函数 Python函数详解 基本概念 函数是Python中…...
Hqst的超薄千兆变压器HM82409S在Unitree宇树Go2智能机器狗的应用
本期拆解带来的是宇树科技推出的Go2智能机器狗,这款机器狗采用狗身体形态,前端设有激光雷达,摄像头和照明灯。在腿部设有12个铝合金精密关节电机,并配有足端力传感器,通过关节运动模拟狗的运动,并可做出多种…...
TaskFlow开发日记 #1 - 原生JS实现智能Todo组件
一、项目亮点 - 📌 **零依赖实现**:纯原生JavaScript CSS3 - 📌 **数据持久化**:LocalStorage自动同步 - 📌 **交互优化**:收藏置顶 动态统计 - 📌 **响应式设计**:完美适配移动端…...
es的告警信息
Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,在运行过程中可能会产生多种告警信息,以提示用户系统中存在的潜在问题或异常情况。以下是一些常见的 ES 告警信息及其含义和处理方法: 集群健康状态告警 信息示例…...
vue实现在线进制转换
vue实现在线进制转换 主要功能包括: 1.支持2-36进制之间的转换。 2.支持整数和浮点数的转换。 3.输入验证(虽然可能存在不严格的情况)。 4.错误提示。 5.结果展示,包括大写字母。 6.用户友好的界面,包括下拉菜单、输…...
责任链设计模式(单例+多例)
目录 1. 单例责任链 2. 多例责任链 核心区别对比 实际应用场景 单例实现 多例实现 初始化 初始化责任链 执行测试方法 欢迎关注我的博客!26届java选手,一起加油💘💦👨🎓😄😂 最近在…...
Matlab 分数阶PID控制永磁同步电机
1、内容简介 Matlab 203-分数阶PID控制永磁同步电机 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
Java中LocalDateTime类
Java中的日期类 Date类LocalDateTime类创建LocalDateTime对象1 获取当前时间2 获取自己指定时间3 字符串创建日期 获取当前日期的信息1获取当前日期的年月日 时分秒2 获取当前日期周几\当年第几天\当月第几天3 获取当前⽇期所在周的周⽇和周⼀ 日期的运算1日期加减天数2 日期加…...
【C语言】--- 文件操作
文件操作 1. 为什么要使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 二进程文件和文本文件4. 文件的打开和关闭4.1 流和标准流4.1.1流4.2.2标准流 4.2 文件指针4.3 打开和关闭操作 5. 文件的顺序读写5.1 文件顺序读写函数5.1.1 fgetc 和 fputc5.1.2 fgets 和 fg…...
操作系统 4.4-从生磁盘到文件
文件介绍 操作系统中对磁盘使用的第三层抽象——文件。这一层抽象建立在盘块(block)和文件(file)之间,使得用户可以以更直观和易于理解的方式与磁盘交互,而无需直接处理磁盘的物理细节如扇区(se…...
第六章 进阶03 外包测试亮相
因为有年度重点项目,团队缺少测试资源,所以临时招聘了一个外包测试(后文用J代指),让产品经理亮亮来带她。 到今天J差不多入职有1个月时间了,亮亮组了个会,一起评审下J做的测试用例。 J展示了其…...
如何使用通义灵码完成PHP单元测试 - AI辅助开发教程
一、引言 在软件开发过程中,测试是至关重要的一环。然而,在传统开发中,测试常常被忽略或草草处理,很多时候并非开发人员故意为之,而是缺乏相应的测试思路和方法,不知道如何设计测试用例。随着 AI 技术的飞…...
使用 nano 文本编辑器修改 ~/.bashrc 文件与一些快捷键
目录 使用 nano 编辑器保存并关闭文件使用 sed 命令直接修改文件验证更改 如果你正在使用 nano 文本编辑器来修改 ~/.bashrc 文件,以下是保存并关闭文件的具体步骤: 使用 nano 编辑器保存并关闭文件 打开 ~/.bashrc 文件 在终端中运行以下命令…...
计算机组成原理——CPU与存储器连接例题
计算机组成原理——CPU与存储器连接例题 设CPU共有16根地址线和8根数据线,并用(MREQ) ̅作为访存控制信号(低电平有效),(WR) ̅作为读/写命令信号(高电平读,低电平写)。现有下列存储芯片&#…...
SQL 外键(Foreign Key)详细讲解
1. 什么是外键? 定义:外键是数据库表中的一列(或一组列),用于建立两个表之间的关联关系。外键的值必须匹配另一个表的主键(Primary Key)或唯一约束(Unique Con…...
B3647 【模板】Floyd
题目链接:点击进入 题目 思路 代码 #include <bits/stdc.h> #define inf 0x3f3f3f3f using namespace std; const int maxn 1e6 10;int n,m,g[110][5000];int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;memse…...
配置镜像端口和观察接口
top: 在G0/0/2上抓包通过其他端口ping pc4 可以看到 Wireshark 抓包没有任何反应,做个镜像端口并配置(观察接口和镜像接口) observe-port interface g0/0/2 #命令配置观察端口mirror to observe-port both …...
爬虫解决debbugger之替换文件
鼠鼠上次做一个网站的时候,遇到的debbugger问题,是通过打断点然后编辑断点解决的,现在鼠鼠又学会了一个新的技能 首先需要大家下载一个reres的插件,这里最好用谷歌浏览器 先请大家看看案例国家水质自动综合监管平台 这里我们只…...
erlang的安装-linux
1:解压 tar -zxvf 安装包 2:进入解压的目录执行: ./configure --prefix/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac 3:编译安装: m…...
Android Coil 3默认P3色域图加载/显示不出来
Android Coil 3默认P3色域图加载/显示不出来 解决,需要在Androidmanifest.xml使用Coil 3的activity配置属性: <activityandroid:colorMode"wideColorGamut"...</activity>...
【LaTeX】安装
Register - Overleaf, 在线LaTeX编辑器 注册Overleaf 安装 Latex2022 安装教程(附安装资源)_tex2022安装教程-CSDN博客 注:先安装 texlive,再安装TexStudio \documentclass{article} % 这里是导言区 \begin{document}Hello, wor…...
【2025年认证杯数学中国数学建模网络挑战赛】A题 解题建模过程与模型代码(基于matlab)
目录 【2025年认证杯数学建模挑战赛】A题解题建模过程与模型代码(基于matlab)A题 小行星轨迹预测解题思路第一问模型与求解第二问模型与求解 【2025年认证杯数学建模挑战赛】A题 解题建模过程与模型代码(基于matlab) A题 小行星轨…...
【KWDB 创作者计划】KWDB 数据库全维度解析手册
——从原理到实践,构建下一代数据基础设施 第一章:KWDB 设计哲学与技术全景 1.1 为什么需要 KWDB? 在数据爆炸与业务场景碎片化的今天,传统数据库面临三大挑战:扩展性瓶颈(单机性能天花板ÿ…...
低代码开发能否取代后端?深度剖析与展望-优雅草卓伊凡
低代码开发能否取代后端?深度剖析与展望-优雅草卓伊凡 在科技迅猛发展的当下,软件开发领域新思潮与新技术不断涌现,引发行业内外热烈探讨。近日,笔者收到这样一个颇具争议的问题:“低代码开发能取代后端吗?…...
LeetCode hot 100—最长回文子串
题目 给你一个字符串 s,找到 s 中最长的 回文 子串。 示例 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输入:s "cb…...
蓝桥杯知识总结
文章目录 1.常用的数学方法2.大小写转换3.数组和集合排序数组排序集合排序 4.控制小数位数5.栈6.队列7.字符串相关方法8.十进制转n进制模板字符转为十进制某进制转化为十进制 9.前缀和10.差分11.离散化12.双指针13.二分14.枚举模板组合型枚举模板排列型枚举模板 15.搜索算法BFS…...
leetcode:2839. 判断通过操作能否让字符串相等 I(python3解法)
难度:简单 给你两个字符串 s1 和 s2 ,两个字符串的长度都为 4 ,且只包含 小写 英文字母。 你可以对两个字符串中的 任意一个 执行以下操作 任意 次: 选择两个下标 i 和 j 且满足 j - i 2 ,然后 交换 这个字符串中两个…...
Python Lambda表达式详解
Python Lambda表达式详解 1. Lambda是什么? Lambda是Python中用于创建匿名函数(没有名字的函数)的关键字,核心特点是简洁。它适用于需要临时定义简单函数的场景,或直接作为参数传递给高阶函数(如map()、f…...
Matlab 平衡车的建模与控制
1、内容简介 Matlab 189-平衡车的建模与控制 可以交流、咨询、答疑 2、内容说明 略 平衡车的建模与控制 选择一款平衡车(如:小米九号平衡车等),并估计平衡车的关键参数。完成以下工作: 1. 建立平衡车模型…...
KWDB创作者计划—KWDB关系库与时序库混搭
📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…...
Android studio2024的第一个安卓项目
目录 一、创建项目 1、创建Empty Views Activity类型项目 2、Android项目结构解析 manifests 目录: Gradle Scripts目录 3、创建安卓应用 二、测试 1、模拟器测试效果 2、连接真机,然后直接选择真机运行即可(点击Run或Shift F10运行…...
航电系统之障碍物监测技术篇
航电系统的障碍物监测技术是保障飞行安全、提升飞行效率的核心技术之一,尤其在复杂环境和低空飞行中发挥着关键作用。以下从技术原理、传感器类型、数据处理与应用等方面进行系统介绍: 一、技术原理 航电系统的障碍物监测技术通过多传感器融合和智能算法…...
网站DDoS防护方案——构建企业级安全屏障的关键路径
本文深度解析DDoS攻击最新演变趋势与防御技术体系,通过攻击特征图谱、云原生防护架构、混合防御模型等维度,揭示企业级网站防护方案的设计逻辑。结合2023年金融行业千万级QPS攻击事件,引用Gartner最新防御技术成熟度曲线,给出可落…...
Linux系统使用lshw生成硬件报告方法
使用 lshw 生成 HTML 硬件报告指南 一、工具简介 lshw(List Hardware)是 Linux 系统下用于检测并报告硬件详细信息的命令行工具,支持输出多种格式(文本、HTML、XML 等)。 核心功能: 显示 CPU、内存、磁盘、PCI/USB 设备等完整硬件信息生成结构化报告,便于存档或分析支…...
力扣 905 按奇偶排序数组:双指针法的优雅实现
目录 问题背景 题目解析 解题思路 暴力解法 双指针法 代码实现 代码解析 算法效率 实际应用场景 总结 问题背景 在编程的世界里,数组排序问题一直是经典中的经典。今天我们要解决的是一个有趣的变种:按奇偶排序数组。题目要求我们将一个整数数…...
LeetCode hot 100—子集
题目 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2…...
BERT - BertTokenizer, BertModel API模型微调
本节代码将展示如何在预训练的BERT模型基础上进行微调,以适应特定的下游任务。 ⭐学习建议直接看文章最后的需复现代码,不懂得地方再回看 微调是自然语言处理中常见的方法,通过在预训练模型的基础上添加额外的层,并在特定任务的…...
通过代码获取接口文档工具
通过代码获取接口文档工具 介绍使用到的技术使用说明核心源码演示截图工具源码 介绍 1.通过前后端代码来生成规格化的接口文档 2.支持拖拽上传或点击选择文件,可以一次选择多个文件或选择文件夹 3.用户选择前后端代码,工具调用GPT解析,得到规…...
不再卡顿!如何根据使用需求挑选合适的电脑内存?
电脑运行内存多大合适?在选购或升级电脑时,除了关注处理器的速度、硬盘的容量之外,内存(RAM)的大小也是决定电脑性能的一个重要因素。但究竟电脑运行内存多大才合适呢?这篇文章将帮助你理解不同使用场景下适…...
leetcode589 N叉树的前序遍历
前序遍历的顺序是:根节点 -> 子节点1 -> 子节点2 -> ... -> 子节点N 递归: class Solution { private:void traverse(Node* cur, vector<int>& res){if(cur NULL) return;res.push_back(cur->val);for(Node* child: cur->…...
游戏引擎学习第216天
回顾并为当天做准备 你可以看到,游戏现在正在运行。如果我没记错的话,我们之前把调试系统关闭了,留下一个状态,让任何想要在这段时间内进行实验的人可以自由操作,因为我们还没有完全完成这个系统。所以这样做是为了确…...
JavaSE反射机制干货
1.反射(Relection) 理解 定义:程序运行状态,动态地获取程序信息及调用程序功能即为java反射机制 2.获取class对象 掌握 2.1 Java代码的3个阶段 Java代码在计算机中经历的三个阶段:Source源代码阶段-Class类对象阶段-Runt…...
[特殊字符] 第十一讲 | 空间回归模型实战:SAR / SEM / GWR逐个击破
📘 专栏:科研统计方法实战分享 | 地学/农学人的数据分析工具箱 ✍️ 作者:平常心0715 🔑 本讲关键词:空间滞后模型(SAR)、空间误差模型(SEM)、地理加权回归(G…...
AI前沿周报:2025年3月技术深度解析
以下是基于2024-2025年AI技术前沿动态的深度技术周报示例,结合行业最新突破与研究进展,突出技术原理与应用场景分析: AI前沿周报:2025年3月技术深度解析 时间范围:2025年3月1日-3月31日 本期焦点:模型透明…...
aidigu开源微博项目程序,PHP开发的开源微博系统,自媒体个人创业、网盘推广首先
一、软件介绍 文末提供程序和源码下载学习 PHP开发的开源微博系统,采用PHP MySQL开发,框架采用ThinkPHP5.1,用户登录后拥有专属ID,支持表情、关注用户,网盘分享等功能,支持图片上传,视频上传,网盘存储分享…...
Tabnet介绍(Decision Manifolds)和PyTorch TabNet之TabNetRegressor
Tabnet介绍(Decision Manifolds)和PyTorch TabNet之TabNetRegressor Decision ManifoldsTabNet1.核心思想2. 架构组成3. 工作流程4. 优点PyTorch TabNetTabNetRegressor参数1. 模型相关参数`n_d``n_a``n_steps``gamma``cat_idxs``cat_dims``cat_emb_dim`2. 训练相关参数`opti…...
格瑞普Tattu正式成为2025年中国无人机竞速联赛官方赞助商!
格瑞普Tattu正式成为2025年中国无人机竞速联赛官方赞助商! 为飞手赋能,为赛事护航! Tattu是深圳市格瑞普电池有限公司(Grepow)旗下的子品牌之一,专注为无人机、FPV和模型爱好者提供专业可靠的电池和充电器等一站式电源解决方案。凭借卓越的放电性能、稳…...
PySide6 监测设备变更事件
在PySide6中监听系统事件,判断是否有串口设备插拔,进而当串口状态变更时,实现列表数据实时更新。 在Qt中,可以使用 nativeEvent 接口来完成这一操作: [virtual protected] bool QWidget::nativeEvent(const QByteArray…...
嵌入式系统的历史与发展
目录 引言 一、嵌入式系统的早期萌芽 1、首个现代嵌入式系统 2、早期未成形嵌入式系统的应用 二、以单片机为主的初级阶段 1、工业领域应用 2、大型家电领域应用 三、处理器升级与多样化应用阶段 1、数字化电子化设备涌现 (1)智能仪表…...
mysql调试记录
ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY password; 该命令在调试python使用pymysql连接数据库出现错误时, 报错为pymysql.err.OperationalError: (1045, "Access denied for user rootlocalhost (using password: NO)") m…...