发布时间:2026/8/8 7:00:05
Python函数-形参传入语法浅析 文章目录前言一、函数定义语法二、形参类型汇总表三、最常用的参数类型重要四、进阶用法了解五、注意事项六、快速查询表七、小结前言在Python中函数的形参参数非常灵活。本文系统性地总结Python函数可以接收的所有参数类型从最常用的基础类型到进阶的高级用法配有大量代码示例方便日后查阅。一、函数定义语法def函数名(形参1,形参2默认值,*args,**kwargs):文档字符串可选函数体return返回值# 可选二、形参类型汇总表三、最常用的参数类型重要基本数据类型defprocess(name,age,price,is_active):处理基本数据类型print(f姓名:{name}, 年龄:{age}, 价格:{price}, 状态:{is_active})#调用示例process(Tom,18,99.9,True)列表 Listdefcalculate_total(prices):计算列表总和returnsum(prices)# 调用示例resultcalculate_total([10,20,30,40])print(result)# 输出: 100字典 Dictdefshow_user_info(user):显示用户信息print(f姓名:{user[name]}, 年龄:{user[age]}, 城市:{user.get(city,未知)})# 调用示例show_user_info({name:Tom,age:18,city:北京})默认参数defcreate_user(name,age18,city北京):带默认参数的函数print(f{name},{age}岁, 来自{city})# 调用示例create_user(Tom)# Tom, 18岁, 来自北京create_user(Jerry,20)# Jerry, 20岁, 来自北京create_user(Spike,25,上海)# Spike, 25岁, 来自上海实例化的对象classUser:def__init__(self,name,age):self.namename self.ageagedefintroduce(self):returnf我是{self.name}今年{self.age}岁defgreet(user):接收对象作为参数print(f你好,{user.name})print(user.introduce())# 调用示例tomUser(Tom,18)greet(tom)#输出结果你好,Tom 我是Tom今年18岁函数本身回调函数defapply_operation(data,func):对数据应用指定的操作函数returnfunc(data)# 调用示例传入不同的函数print(apply_operation([1,2,3],sum))# 输出: 6print(apply_operation([1,2,3],len))# 输出: 3print(apply_operation(hello,str.upper))# 输出: HELLOprint(apply_operation(5,lambdax:x*2))# 输出: 10可变参数 *argsdefsum_all(*args):接收任意数量的位置参数print(f参数元组:{args})returnsum(args)# 调用示例print(sum_all(1,2,3))# 输出: 6print(sum_all(10,20,30,40))# 输出: 100print(sum_all())# 输出: 0可变参数 **kwargsdefshow_info(**kwargs):接收任意数量的关键字参数forkey,valueinkwargs.items():print(f{key}:{value})# 调用示例show_info(nameTom,age18,city北京,job工程师)# 输出:# name: Tom# age: 18# city: 北京# job: 工程师混合使用defmixed_params(a,b10,*args,**kwargs):混合使用各种参数类型print(f必传参数 a:{a})print(f默认参数 b:{b})print(f额外位置参数 args:{args})print(f额外关键字参数 kwargs:{kwargs})returnab# 调用示例mixed_params(1,2,3,4,5,x6,y7)# 输出:# 必传参数 a: 1# 默认参数 b: 2# 额外位置参数 args: (3, 4, 5)# 额外关键字参数 kwargs: {x: 6, y: 7}四、进阶用法了解传入类本身classWarrior:defattack(self):return战士挥剑攻击classMage:defattack(self):return法师释放火球defstart_game(player_class):传入类本身在函数内部实例化playerplayer_class()print(f你选择了{player_class.__name__})print(player.attack())# 调用示例start_game(Warrior)# 你选择了 Warrior / 战士挥剑攻击start_game(Mage)# 你选择了 Mage / 法师释放火球实战场景批量创建对象classUser:tableusersdefsave(self):print(f保存到{self.table}表)classProduct:tableproductsdefsave(self):print(f保存到{self.table}表)defbatch_create(model_class,data_list):批量创建并保存对象objs[]fordataindata_list:objmodel_class()forkey,valueindata.items():setattr(obj,key,value)# 动态设置属性obj.save()objs.append(obj)returnobjs# 调用示例batch_create(User,[{name:Tom},{name:Jerry}])batch_create(Product,[{name:iPhone,price:999},{name:Mac,price:1999}])传入模块对象# 假设有不同支付模块# pay_alipay.pydefpay(amount):returnf支付宝支付{amount}元# pay_wechat.pydefpay(amount):returnf微信支付{amount}元defcheckout(pay_module,amount):传入模块对象动态选择支付方式returnpay_module.pay(amount)# 调用示例假设已导入模块importpay_alipayimportpay_wechatprint(checkout(pay_alipay,100))# 支付宝支付 100 元print(checkout(pay_wechat,200))# 微信支付 200 元配套工具函数# getattr: 动态获取属性userUser()user.nameTomprint(getattr(user,name,默认值))# Tom# setattr: 动态设置属性setattr(user,age,18)# 等价于 user.age 18# hasattr: 判断是否有该属性print(hasattr(user,name))# Trueprint(hasattr(user,address))# False五、注意事项可变对象作为默认参数常见陷阱# ❌ 错误写法defadd_item(item,lst[]):lst.append(item)returnlstprint(add_item(1))# [1]print(add_item(2))# [1, 2] ← 期望 [2]但实际继承了上次的结果# ✅ 正确写法defadd_item(item,lstNone):iflstisNone:lst[]lst.append(item)returnlstprint(add_item(1))# [1]print(add_item(2))# [2]参数顺序规则defcorrect_order(a,b10,*args,**kwargs):# 顺序必传参数 → 默认参数 → *args → **kwargspass# ❌ 错误顺序defwrong_order(a,*args,b10):# 语法错误pass六、快速查询表七、小结1.90%的情况你只需要传递数字、字符串、列表、字典、对象、带默认值的参数2.*args和**kwargs 在处理不确定数量的参数时非常有用3.传入类本身和传入模块对象是进阶技巧在框架开发、插件系统中很常见4.Python函数形参的核心思想一切皆对象任何对象都可以作为参数传递参考资料Python官方文档https://docs.python.org/3/tutorial/controlflow.html#defining-functions

相关新闻

2026/8/8 6:55:05

AI竞争转向应用生态构建:从技术军备到开发者赋能

上周,OpenAI 组织了一场面向内容创作者的线下活动,这在社区里引发了一些讨论。很多人第一反应是:一个以技术驱动著称的AI公司,怎么突然搞起了“网红营销”?这背后到底是在传递什么信号?如果你只把它看作一次…

2026/8/8 6:55:05

不用付费存储!Linux NFS 实现多服务器文件实时共享

一、NFS基础介绍 1.1 NFS定义 NFS(Network File System,网络文件系统)是Sun公司开发的跨平台文件共享协议,客户端可像访问本地目录一样读写远程服务器共享文件夹,广泛用于集群统一存储、企业内网文件共享。 1.2 NFS版本…

2026/8/8 8:10:09

基于Socket.IO与CSS变量的实时动态配色聊天室全栈实现

最近在开发一个需要动态配色和网络通信的项目时,我深刻体会到,如果有一套既稳定又美观的协议和配色方案,能省去多少重复造轮子的时间。今天要分享的,正是这样一个宝藏组合——“超夯网络喵协议”与“电子动态配色”系统。这并非某…

2026/8/8 8:10:09

知典小读 PRD 公开:一个 AI 名著解读小程序的产品设计思路

从需求到功能清单,我是怎么设计这款小程序的。做产品最怕的不是写代码,而是需求模糊。"我想做个读书小程序"——这句话背后可能有一百种理解。是微信读书那种正版阅读?是得到那种音频解读?还是小红书那种读书笔记社区&a…

2026/8/8 8:10:09

家长远程控制孩子手机用什么软件 孩子手机远程管控工具推荐

很多家长都面临孩子沉迷手机、偷偷玩游戏的难题,想要实现家长远程控制孩子手机,实时监管孩子手机使用状态、规范用机习惯,却苦于找不到好用的工具。想要稳定、安全、无门槛地实现家长远程控制孩子手机,无界趣连2.0是绝佳选择&…

2026/8/8 8:10:09

Android应用下载安装全流程解析:从OkHttp到FileProvider的实践指南

1. 从零到一:理解Android App的获取与部署 在移动开发领域,无论是作为开发者发布自己的作品,还是作为用户安装心仪的软件,App的下载与安装都是最基础、最核心的环节。这个过程看似简单——点击、下载、安装——但其背后却涉及了从…

2026/8/8 8:10:09

Agent记忆系统概述,短期记忆长期记忆工作记忆全解析

Agent记忆系统概述,短期记忆长期记忆工作记忆全解析 你有没有这样的体验。跟ChatGPT聊了一会儿,它记住了前面说的内容,能接着聊。但是关掉窗口重新打开,它就全忘了,一切从头来。 这就是大模型的记忆问题。大模型本身…

2026/8/7 19:43:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/8 0:04:22

Java图像处理实战指南

要执行这些 Java AWT 图像处理程序,你需要将它们分别保存为独立的 .java 文件,并使用 javac 编译,然后使用 java 运行。以下是每个程序的核心执行步骤、依赖关系和要点。 通用执行步骤 保存文件:将每个 listing 的代码复制到文本…

2026/8/8 0:04:23

昇腾AI代理实现多号通话自动化

基于昇腾(Ascend)硬件与AtomGit AI社区的开源生态,结合AI Agent技术,可以实现一个模拟“通话重复使用机号复制”功能的安卓手机应用原型。其核心是利用AI Agent进行意图理解、任务编排和自动化操作,模拟或管理多号码的…

2026/8/8 0:04:23

2026年Graph+AI Agents最新创新思路

本次围绕GraphAI Agents这个方向筛选了15篇高质量论文,都是近年来具有较高引用价值或方法创新的研究工作,其中部分来自IJCAI、AAAI、ICRA。 对于论文er来说,这些论文方法结构清晰、可复现性较强,在多个任务上都有可延展的空间。如…

2026/8/7 9:44:18

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/7 19:03:32

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/8 2:17:42

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…