Python--函数进阶(上)
1. 参数深入理解
1.1 参数传递的内存机制
Python中参数传递的是内存地址(引用传递),而非值拷贝。这意味着:
- 可变对象(列表、字典)在函数内修改会影响外部变量。
- 不可变对象(数字、字符串)在函数内重新赋值会创建新对象。
def modify_list(lst):lst.append(4) # 修改原列表my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # 输出:[1, 2, 3, 4]
def reassign_str(s):s = "新字符串" # 创建新对象my_str = "原字符串"
reassign_str(my_str)
print(my_str) # 输出:原字符串
1.2 默认参数的陷阱
当默认参数为可变对象时,多次调用会共享同一内存地址:
def buggy_func(data=[]):data.append(1)return dataprint(buggy_func()) # [1]
print(buggy_func()) # [1, 1](非预期结果)
解决方案:使用不可变类型(如None)作为默认值,并在函数内创建新对象:
def fixed_func(data=None):data = data or []data.append(1)return data
1.3 动态参数(*args与**kwargs)
- *args:接收任意数量的位置参数,存储为元组。
- **kwargs:接收任意数量的关键字参数,存储为字典。
def dynamic_args(*args, **kwargs):print(f"位置参数: {args}")print(f"关键字参数: {kwargs}")dynamic_args(1, 2, name="Alex", age=18)
# 输出:
# 位置参数: (1, 2)
# 关键字参数: {'name': 'Alex', 'age': 18}
应用场景:格式化字符串、批量处理数据:
values = [11, 22, 33]
print("和为:", *values) # 解包为 print("和为:", 11, 22, 33)
2. 函数名的本质与使用
2.1 函数名作为变量
函数名本质是一个指向函数对象的变量:
def greet():print("Hello!")alias = greet
alias() # 输出:Hello!
2.2 函数作为参数与返回值
函数作为参数:
def apply(func, x, y):return func(x, y)result = apply(lambda a, b: a * b, 3, 4)
print(result) # 输出:12
函数作为返回值:
def multiplier(factor):def inner(x):return x * factorreturn innerdouble = multiplier(2)
print(double(5)) # 输出:10
2.3 高阶函数应用
-
map:对可迭代对象应用函数:
numbers = [1, 2, 3] squared = list(map(lambda x: x**2, numbers)) # [1, 4, 9] -
filter:过滤元素:
even = list(filter(lambda x: x % 2 == 0, numbers)) # [2]
相关文章:
Python--函数进阶(上)
1. 参数深入理解 1.1 参数传递的内存机制 Python中参数传递的是内存地址(引用传递),而非值拷贝。这意味着: 可变对象(列表、字典)在函数内修改会影响外部变量。不可变对象(数字、字符串&…...
Linux 常见面试题汇总
在当今数字化时代,Linux 作为一种开源、稳定且高效的操作系统,在服务器领域占据着举足轻重的地位。无论是运维工程师、开发人员还是系统管理员,掌握 Linux 相关知识都成为了必备技能。这篇博客将为大家汇总一些常见的 Linux 面试题࿰…...
网络运维学习笔记 015网工初级(HCIA-Datacom与CCNA-EI)NAT网络地址转换
文章目录 NAT(Network Address Translation,网络地址转换)思科:1)PAT2)静态端口转换 华为:1)EasyIP2)NAT Server静态NAT:动态NAT:实验1:在R1上配置NAPT让内网…...
蓝桥杯刷题25.2.22|打卡
一、幸运数 3491 谨记:使用函数,拆分成多个小问题,不容易出错 #include <iostream> using namespace std; //计算位数 int check(int a){int count0;while(a){aa/10;count;}return count; } bool fun(int sum){int countcheck(sum);int…...
学习笔记-沁恒第五讲-米醋
一,设置音量 上次 这次 #include "uart.h" #include "debug.h" void audio_init() { Usart3_Init(); } void audio_play(u8 num) { u8 string[]{0x7e,0x05,0x41,0x00,num,0x05^0x41^0x00^num,0xef}; u8 i; for(i0;i<7;i) { USART_Se…...
骁勇善战的量化利器:多因子模型【量化理论】
我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲alpha策略制定后的测试问题 风险模型雏形 股票因子受多种因素影响,其价格由多种因素决定,所谓的多因子策略就是要发掘诸如此类的因子,以一种合理的方…...
Android Loader机制解析
参考: Android Loader 机制...
使用Docker部署SearXNG
SearXNG 搜索引擎 SearXNG 是一个整合了超过70个搜索服务结果的免费的私有互联网搜索引擎,用户不会被网站跟踪或被建立档案进行特征分析,良好地保障了用户的隐私。知识库可以有效地弥补大模型的知识欠缺问题,但依旧无法补充或弥补知识库和大…...
C# ConcurrentQueue 使用详解
总目录 前言 在C#多线程编程中,数据共享如同走钢丝——稍有不慎就会引发竞态条件(Race Condition)或死锁。传统Queue<T>在并发场景下需要手动加锁,而ConcurrentQueue<T>作为.NET Framework 4.0 引入的线程安全集合&a…...
armv7l
在 **ARMv7l** 中,最后的字符是字母 **“l”**(小写字母 “L”),而不是数字 **“1”**。 --- ### 1. **ARMv7l 的含义** - **ARMv7**:指的是 **ARM 架构的第 7 代版本**,是一种广泛应用于嵌入式系统&…...
spring中关于Bean的复习(IOC和DI)
文章目录 1.spring程序开发步骤1.1 导入spring开发的基本包坐标1.2 编写Dao接口和实现类1.3 创建spring核心配置文件1.4 在spring配置文件中配置UserDaoImpl1.5 使用Spring的Api获得Bean实例 2. Bean实例化的三种方式2.1 无参构造方法实例化2.2 工厂静态方法实例化2.3 工厂实例…...
Docker内存芭蕾:优雅调整容器内存的极限艺术
title: “💾 Docker内存芭蕾:优雅调整容器内存的极限艺术” author: “Cjs” date: “2025-2-23” emoji: “🩰💥📊” 当你的容器变成内存吸血鬼时… 🚀 完美内存编排示范 📜 智能内存管家脚本…...
一周学会Flask3 Python Web开发-flask3上下文全局变量session,g和current_app
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili flask3提供了session,g和current_app上下文全局变量来方便我们操作访问数据。 以下是一个表格,用于比较Flask中的…...
【蓝桥杯单片机】客观题
一、第十三届省赛(一) 二、第十三届省赛(二)...
QT中经常出现的用法:组合
在 C 中,一个类包含另一个类的对象称为组合( Composition )。这是一种常见的设计模式,用 于表示一个类是由另一个类的对象组成的。这种关系通常表示一种 " 拥有 " ( "has-a" )的关系。…...
下载CentOS 10
1. 进入官网:https://www.centos.org/ 2. 点击右上角的Download进入下载页面。 3. 选择对应的CPU架构,点击ISOs下面的Mirrors开始下载。...
第9章:LangChain让大模型结构化输出
文章详细介绍了LangChain4j中如何使用结构化输出(Structured Outputs)。主要内容包括: JSON Schema:通过指定JSON Schema,LLM可以生成符合结构的输出。工具(Tools):通过工具调用实现…...
ES6 新特性,优势和用法?
ES6 新特性,优势和用法? ES6(ECMAScript 2015)引入了许多新特性,这些特性让 JavaScript 变得更加强大、简洁和易于使用。下面为你详细介绍一些常见的 ES6 新特性、它们的优势以及用法。 1. 块级作用域:le…...
简说spring 的设计模式
spring 的设计模式(23种…) (面试题)说说BeanFactory和FactoryBean的实现原理和区别? spring 中你还知道哪些设计模式?? 1.简单工厂模式 实质: 由一个工厂类根据传入的参数,动态决…...
【 Avalonia UI 语言国际化 I18n】图文结合教学,保姆级教学,语言国际化就是这么简单(.Net C#)
完整项目地址 github : https://github.com/Crazy-GrowUp/AvaloniaI18nTest/tree/master gitee :https://gitee.com/jack_of_disco/avalonia-i18n-test 0.项目新建 Properties 文件夹 对应的项目配置文件里面就会增加 <Folder Include"Properties\" /> 1.项…...
Spring Boot 日志管理(官网文档解读)
摘要 本篇文章详细介绍了SpringBoot 日志管理相关的内容,文章主要参考官网文章的描述内容,并在其基础上进行一定的总结和拓展,以方便学习Spring Boot 的小伙伴能快速掌握Spring Boot 日志管理相关的内容。 日志实现方式 Sping Boot 的日志管…...
Nginx学习笔记:常用命令端口占用报错解决Nginx核心配置文件解读
Nginx 1. 基础命令1.1 重新加载systemd配置1.2 停止Nginx服务1.3 启动Nginx服务1.4 重启Nginx服务1.5 查看Nginx服务状态1.6 测试配置和重载Nginx 2. 额外命令2.1 启用开机自启2.2 禁用开机自启2.3 强制关闭所有Nginx进程 3. Nginx端口占用解决方案3.1 查找占用端口8090的进程3…...
【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)
《API Testing and Development with Postman》最新第二版封面 文章目录 最新版《Postman 接口测试与开发实战》示例 API 项目本地部署保姆级搭建教程1 前言2 准备工作3 具体部署3.1 将项目 Fork 到自己名下3.2 创建虚拟环境并安装依赖3.3 初始运行与项目调试 4 示例项目的用法…...
高清下载油管视频到本地
下载工具并安装: yt-dlp官网地址: GitHub - yt-dlp/yt-dlp: A feature-rich command-line audio/video downloader ffmpeg官网地址: Download FFmpeg 注:记住为其添加环境变量 操作命令: 该指令表示以720p码率下载VIDEO_UR…...
网络运维学习笔记 021 HCIA-Datacom新增知识点02 SDN与NFV概述
SDN与NFV概述 经典IP网络是一个分布式的、对等控制的网络。 每台网络设备存在独立的数据平面、控制平面和管理平面。 设备的控制平面对等的交互路由协议,然后独立的生成数据平面指导报文转发。 它的优势在于设备与协议解耦,厂家间的兼容性较好且故障场景…...
《论模型驱动架构设计方法及其应用》审题技巧 - 系统架构设计师
软件测试工程师软考论文写作框架 一、考点概述 “模型驱动架构设计及其应用”这一论题,主要考察了考生对模型驱动架构设计(MDA)这一先进软件设计方法的理解与应用能力。论题涵盖了MDA的基本概念、核心要素、实施流程及在实际项目中的应用等…...
【Linux】多线程 -> 线程同步与基于BlockingQueue的生产者消费者模型
线程同步 条件变量 当一个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了。 例如:一个线程访问队列时,发现队列为空,它只能等待,直到其它线程将一个节点添加到队列中。这…...
Docker Mysql 数据迁移
查看启动命令目录映射 查看容器名称 docker ps查看容器的启动命令 docker inspect mysql8.0 |grep CreateCommand -A 20如下图所示:我这边是把/var/lib/mysql 目录映射到我宿主机的/mnt/mysql/data目录下,而且我的数量比较大使用方法1的话时间比较久,所以我采用方法2 如果没…...
四步彻底卸载IDEA!!!
各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连,小编尽全力做到更好 欢迎您分享给更多人哦 大家好,我们今天来学习四步彻底卸载IDEA!!! 首先我要提醒各位 如果你想删除 IDEA 相关…...
HTTP实验(ENSP模拟器实现)
HTTP概述 HTTP(HyperText Transfer Protocol,超文本传输协议),设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP定义了多种请求方法,常用的包括: GET:请求资源。 POST&…...
