39、Python函数参数传递机制详解

Python函数参数传递机制详解

1. Python参数传递基础

1.1 参数传递模式

Python的参数传递方案与C++的引用参数选项并不完全相同,但在实践中,它与C语言的参数传递模型非常相似:
- 不可变参数按值传递 :像整数和字符串这样的对象是通过对象引用传递的,而不是通过复制。但由于无法对不可变对象进行原地修改,其效果类似于复制。
- 可变参数按指针传递 :列表和字典等对象同样通过对象引用传递,这类似于C语言将数组作为指针传递的方式。可变对象可以在函数中进行原地修改,就像C数组一样。

1.2 参数与共享引用示例

以下代码展示了参数传递的特性:

def changer(a, b):
    a = 2
    b[0] = 'spam'

X = 1
L = [1, 2]
changer(X, L)
print(X, L)  # 输出: (1, ['spam', 2])

在这个代码中, changer 函数对参数 a 赋值,并修改了参数 b 所引用对象的一个元素。这两个赋值操作在语法上只有细微差别,但结果却截然不同:
- 由于 a 是函数作用域内的局部名称,第一个赋值操作对调用者没有影响,它只是改变了局部变量 a ,而没有改变调用者中名称 X 的绑

相关推荐

Python选择题解析

题目:关于 Python Interpreter 和 IDE 的描述错误的是正确答案:DPython 是解释型语言,其执行流程为: Interpreter(解释器):是 Python 运行的核心引擎,负责将源代码翻译成字节码并执行。CPython 是最常用的实现,用 C 语言编写。 IDE(集成开发环境):如 PyCharm、VS Code,是代码编辑和管理的工具集,本身不具备代码执行能力。 知识点延伸 概念 说明 CPython 官方标准解释器,将Python代码编译为字节码后在虚拟

iillxnnd的博客 141

Cython加速Python性能瓶颈:渐进式优化实战指南

Cython是一种面向Python开发者的编译型优化工具,其核心原理是将带类型声明的Python超集代码(.pyx)静态编译为CPython兼容的C扩展模块,在保留Python开发体验的同时,绕过解释器开销与部分GIL限制。技术价值在于‘最小侵入式提速’——无需重写全栈,仅对cProfile定位出的CPU密集型热点函数(如嵌套数值循环、JSON路径解析、图像像素计算)添加cdef类型声明或nogil并行块,即可实现3–9倍性能提升。典型应用场景包括金融实时行情处理、爬虫HTML解析加速、科学计算内核优化及n

493

小甲鱼python零基础017函数:Python的乐高积木

一、测试题 0. 你有听说过DRY吗? 1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢? 2. 函数可以有多个参数吗? 3. 创建函数使用什么关键字,要注意什么? 4. 请问这个函数有多少个参数? 1. def MyFun((x, y), (a, b)): 2. return x * y - a * b 5. 请问调用以下这个函数会打印什么内容? ...

ShinYea行言的博客 744

Python元组:不可变性驱动的接口契约与工程实践

元组是Python中表达固定结构、保证数据完整性的核心类型,其不可变性并非语法限制,而是支撑类型安全、并发安全与哈希可用性的底层契约机制。从函数多返回值、字典键构造到NamedTuple轻量数据建模,元组通过编译期可验证的结构约定,显著降低运行时错误率与调试成本。在API响应封装、配置管理、缓存键生成等高频场景中,元组相比列表、字典或dataclass展现出更低内存开销、更高缓存命中率及天然线程安全优势。本文深入解析元组在真实工程中的不可替代价值,覆盖解包陷阱、类型提示协同、并发红利与生产级重构案例。

benben 369

Python性能优化实战:C++与Cython加速计算密集型模块

在软件开发中,解释型语言与编译型语言的性能差异是一个基础且关键的技术概念。Python作为动态解释型语言,在快速原型开发方面优势显著,但其运行时类型检查和解释执行机制,在处理计算密集型任务时可能成为性能瓶颈。相比之下,C++作为静态编译型语言,通过预编译为高效机器码,能实现数量级的性能提升,尤其在循环、数值计算和复杂数据结构操作等场景下价值突出。这种性能优化思路广泛应用于数据分析、科学计算、游戏引擎和高频交易等领域。本文聚焦于通过Cython和PyBind11两种主流技术方案,将Python核心计算模块转换

weixin_33693070的博客 460

BBMerge实战:5分钟搞定二代测序双端reads合并(附常见报错解决方案)

本文详细介绍了如何使用BBTools套件中的BBMerge工具,在5分钟内高效完成二代测序双端reads的合并。内容涵盖从快速安装、基础命令到参数调优的完整实战流程,并针对内存溢出、合并失败等常见报错提供了具体解决方案,帮助生物信息学分析人员快速上手并解决实际问题。

butter的博客 461

OmniRoute:极简AI代理路由引擎,5分钟构建智能工具调用系统

如果你是一名开发者,最近在关注 AI 代理(Agent)领域,那么你很可能已经感受到了一个明显的痛点: 如何让一个 AI 代理真正“动”起来,去调用外部工具、执行复杂任务,而不仅仅是聊天? 市面上已经有很多优秀的 Agent 框架,比如 LangChain、AutoGen、CrewAI 等,它们提供了强大的抽象和编排能力。但随之而来的,是陡峭的学习曲线、复杂的依赖管理,以及为了一个简单任务而不得不引入一整套“重型”框架的负担。很多时候,我们只是想快速验证一个想法,或者构建一个轻量级的自动化流程,却感觉“杀鸡

weixin_30718391的博客 329

C++ 知识补充

向量(vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。

weixin_47059239的博客 2130

Llama 3.2 + Gradio 构建生产级多模态Web应用

多模态应用指能同步处理文本、图像、音频等多种输入形式的智能系统,其核心在于跨模态数据对齐与低延迟协同推理。随着Llama 3.2发布,模型在KV Cache显式管理、量化感知权重和多模态头解耦方面显著增强工程可控性;而Gradio凭借线程隔离的State机制与事件驱动状态图,天然解决异构数据流下的状态一致性难题。相比传统Flask+React架构,该组合可规避序列化开销、内存爆炸与UI响应错位,特别适合合同审查、工单分析、设计评审等需结构化输出的真实业务场景。本文聚焦Llama 3.2与Gradio深度协同

weixin_30825199的博客 343

Qoder+GLM-5.1:本地AI编程助手的轻量级闭环实践

代码大模型正从云端服务走向本地化智能开发,其核心在于模型与IDE的深度语义协同。传统LLM依赖HTTP调用和纯文本prompt,导致上下文断裂、语义失真与高延迟;而真正落地的本地开发范式,需融合结构化AST解析、符号表热加载与进程内推理等关键技术。阿里Qoder作为轻量级Agent Runtime,配合智谱GLM-5.1这一专为代码理解-生成-修复闭环设计的10B级特化模型,实现了在MacBook M2等消费级设备上零API网关、低延迟、高准确率的智能补全与错误修复。该组合代表了本地AI编程从‘可用’到‘好

anchang7456的博客 396

二进制炸弹逆向工程实战:从GDB调试到数据结构破解全解析

逆向工程是分析程序内部逻辑与行为的关键技术,其核心原理在于通过静态分析与动态调试,理解二进制代码的执行流程与数据流转。这项技术的工程价值在于提升开发者对计算机系统底层机制的理解,增强软件安全分析与漏洞挖掘能力。在计算机安全教学、软件调试、恶意代码分析等场景中,逆向工程都是基础且重要的实践技能。本文聚焦于经典的“二进制炸弹”教学项目,详细阐述了使用GDB调试器进行动态跟踪、利用反汇编进行静态分析,并逐步破解包含字符串比较、循环数组、条件跳转、递归函数及链表结构在内的多层次关卡,为学习者构建系统的逆向工程实战能

靓靓软件工作室 470

大模型选型实战指南:按场景降本增效的三维决策法

大模型不是越强越好,而是要匹配真实业务场景的能力需求。从基础概念看,大语言模型的核心价值在于将自然语言转化为可执行逻辑;其技术原理涉及推理链构建、工具状态一致性维护与上下文注意力分配;关键价值体现在单位token成本下的可用性、可维护性与错误可修复性;典型应用场景包括代码辅助、中文内容生成、多工具Agent编排与实时交互问答;本文基于8个主流模型在推理、代码、工具调用、速度、成本五大维度的真实压测数据,揭示旗舰/性价比/经济三梯队的本质差异,并提供可落地的组合配置与避坑策略。

dengjuanshou7445的博客 380

Python从0到100完整学习指南(必看导航)

想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学业升学和工作就业的先行者!

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 6万+

【Python进阶】字典:高效键值存储的十大核心应用

本文通过10个典型场景,深入解析Python字典的核心操作与高阶技巧,揭示其在高性能数据存取中的独特价值。

赶紧的博客 1451

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【scp】Windows 下scp报错 bad permissions

Windows 下使用 SSH 连接报 Bad owner or permissions on C:\\Users\\Administrator/.ssh/config 错误问题解决 C:\Users\Administrator>scp -P 66666 D:\1111.pdf zzd@58.213.45.xx:/home/zzd/ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING:...

走在搬砖的路上! 4154

永久关闭Windows更新的5种方法

很多家用电脑,如果系统自动更新的话,会变得越来越卡顿,且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢?以下准备了5种方法,您可以根据自身实际情况选择合适的方法!

qq_43652793的博客 1万+

【Windows】 解决联想为主的所有自带摄像头(integrate camera)打不开的毛病(特别点名小新、thinkbook、thinkpad、y7000...)

解决联想系列电脑打不开自带摄像头的问题

Iamruzi的csdn博客 3万+

均值回归 高频交易_基于布林带的均值回归交易策略

BOLL指标是美国股市分析家约翰·布林根据统计学中的标准差原理设计出来的一种非常简单实用的技术分析指标。一般而言,股价的运动总是围绕某一价值中枢(如均线、成本线等)在一定的范围内变动,布林线指标正是在上述条件的基础上,引进了“股价通道”的概念,其认为股价通道的宽窄随着股价波动幅度的大小而变化,而且股价通道又具有变异性,它会随着股价的变化而自动调整。由于之前大部分交易策略都是选股或者趋势追踪的择时,...

weixin_42528534的博客 1458

GD32官方资料学习体系(主要包括MCU选型、原理图PCB设计、软件开发入门及用户手册等)

大部分还未更新,先占个坑,日后更新…… 目前国外芯片涨价涨的离谱(就是在说ST),国内最好的替代就是兆易创新出的系列芯片了。但是官方资料繁杂,小白上手不易,因此边入门边记录,也给后来者根据官方资料可以有一个较为完整的学习体系。

Eddie的博客 1万+

模型可解释性分析:基于SHAP的深度探索

SHAP模型可解释性分析摘要 本文系统性地介绍了SHAP(SHapley Additive exPlanations)方法在机器学习模型可解释性分析中的应用。SHAP基于博弈论的Shapley值理论,为特征重要性评估提供了统一框架。文章详细阐述了四种核心算法:Kernel SHAP(模型无关方法)、Tree SHAP(针对树模型的高效算法)、Deep SHAP(适用于深度学习)和Linear SHAP(线性模型专用)。通过Python实现展示了从数据准备到SHAP分析的全流程,包括摘要图、依赖图等可视化技术

huanghm88的专栏 611

MIPI D-PHY的校准测试

MIPI的校准测试困扰了很久,今天终于得以解决!

一只豌豆象的博客 3919

深度学习实战12(进阶版)-利用Dewarp实现文本扭曲矫正

大家好,我是微学A1, 我们在生活中会看到一些拍摄扭曲的图片,我们在通过OCR识别的时候,因为扭曲的厉害,而无法识别,我们需要对图片进行处理。

微学AI的博客 3157

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 24、正则表达式引擎与实用技巧解析
下一篇: 61、边缘计算中的智能无人机
bean
博客等级 码龄27年 1455粉丝 1637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值