发布时间:2026/9/3 8:00:00
影刀RPA 函数参数详解:位置参数、关键字参数、默认值 影刀RPA 函数参数详解位置参数、关键字参数、默认值作者林焱什么情况用你在影刀RPA的Python代码块里写函数发现参数传得越来越乱——有的按顺序传、有的按名字传、有的有默认值有的没有。调用的时候参数太多记不住哪个是哪个位置。函数参数是Python函数设计的基础。在影刀RPA中把通用逻辑封装成函数通过参数控制不同场景的行为是代码复用的核心技能。本文把Python函数参数的五种形式讲清楚位置参数、关键字参数、默认值参数、*args、**kwargs配合RPA实战场景。怎么做一、五种参数类型速览defexample(a,b,c10,*args,**kwargs): a - 位置参数必填 b - 位置参数必填 c - 默认值参数可选默认10 *args - 可变位置参数收集多余的打包成元组 **kwargs - 可变关键字参数收集多余的打包成字典 print(fa{a}, b{b}, c{c})print(fargs{args})print(fkwargs{kwargs})二、位置参数最基础的参数类型按位置顺序传递defscrape_page(url,page_num):采集指定页面的数据print(f采集{url}第{page_num}页)# ... 采集逻辑 ...# 调用时按顺序传参scrape_page(https://example.com,1)# 输出采集https://example.com第1页# 参数顺序不能反scrape_page(1,https://example.com)# 不报错但逻辑错误三、关键字参数按参数名传参不依赖顺序可读性更好defscrape_page(url,page_num,timeout):print(f采集{url}第{page_num}页超时{timeout}秒)# 用关键字传参顺序无所谓scrape_page(urlhttps://example.com,timeout30,page_num1)# 输出采集https://example.com第1页超时30秒# 混合使用位置参数在前关键字参数在后scrape_page(https://example.com,page_num1,timeout30)四、默认值参数给参数设置默认值调用时可以不传defscrape_page(url,page_num1,timeout30,retry3):采集页面大部分参数有默认值print(f采集{url}第{page_num}页超时{timeout}秒重试{retry}次)# 只传必填参数scrape_page(https://example.com)# 采集https://example.com第1页超时30秒重试3次# 修改部分默认值scrape_page(https://example.com,page_num5)# 采集https://example.com第5页超时30秒重试3次scrape_page(https://example.com,page_num5,timeout60)# 采集https://example.com第5页超时60秒重试3次# 用关键字跳过中间的默认参数scrape_page(https://example.com,retry5)# 采集https://example.com第1页超时30秒重试5次规则默认值参数必须放在位置参数后面。五、*args 可变位置参数当不确定要传多少个参数时使用多余参数被打包成元组defcalculate_sum(*args):计算任意多个数的和totalsum(args)print(f参数{args}总和{total})returntotal calculate_sum(1,2,3)# 参数(1, 2, 3)总和6calculate_sum(10,20,30,40)# 参数(10, 20, 30, 40)总和100calculate_sum()# 参数()总和0# RPA场景批量创建文件夹defcreate_folders(base_path,*folder_names):在基础路径下创建多个文件夹importos created[]fornameinfolder_names:pathos.path.join(base_path,name)os.makedirs(path,exist_okTrue)created.append(path)print(f创建文件夹{path})returncreated create_folders(D:/data,raw,processed,backup,logs)# 创建4个文件夹六、**kwargs 可变关键字参数收集多余的关键字参数打包成字典defsend_notification(title,message,**kwargs):发送通知支持多种可选配置print(f标题{title})print(f内容{message})# 处理可选配置ifpriorityinkwargs:print(f优先级{kwargs[priority]})iftoinkwargs:print(f发送给{kwargs[to]})ifccinkwargs:print(f抄送{kwargs[cc]})# 遍历所有额外参数forkey,valueinkwargs.items():print(f{key}:{value})send_notification(采集完成,共采集128条数据,priorityhigh,toadminexample.com,methodemail)# 标题采集完成# 内容共采集128条数据# 优先级high# 发送给adminexample.com# method: email七、参数组合使用defwrite_to_excel(filepath,sheet_nameSheet1,*columns,**options): 写入Excel的通用函数 filepath - 必填文件路径 sheet_name - 默认Sheet1 *columns - 要写入的列名 **options - 其他选项是否覆盖、是否加表头等 print(f文件{filepath})print(fSheet{sheet_name})print(f列{columns})print(f选项{options})write_to_excel(data.xlsx,销售数据,商品名,价格,库存,overwriteTrue,add_headerTrue,freeze_panesA2)# 文件data.xlsx# Sheet销售数据# 列(商品名, 价格, 库存)# 选项{overwrite: True, add_header: True, freeze_panes: A2}八、RPA实战通用采集函数defscrape_website(url,# 必填目标URLmethodGET,# 请求方法headersNone,# 请求头paramsNone,# URL参数dataNone,# POST数据timeout30,# 超时秒数retry3,# 重试次数encodingutf-8,# 编码**kwargs# 其他 requests 参数):通用网页采集函数importrequestsimporttimeifheadersisNone:headers{User-Agent:Mozilla/5.0}forattemptinrange(1,retry1):try:responserequests.request(methodmethod,urlurl,headersheaders,paramsparams,datadata,timeouttimeout,**kwargs)response.encodingencodingreturn{success:True,status_code:response.status_code,content:response.text,url:response.url}exceptExceptionase:print(f第{attempt}次尝试失败{e})ifattemptretry:time.sleep(2*attempt)# 递增等待else:return{success:False,error:str(e),status_code:None,content:None,url:url}# 基本调用resultscrape_website(https://example.com)# 自定义参数resultscrape_website(https://api.example.com/data,methodPOST,params{page:1,size:20},data{keyword:手机},timeout60,retry5,verifyFalse# 通过kwargs传给requests)九、参数解包调用函数时可以用*和**解包列表和字典defadd_record(name,price,stock,category):print(f添加{name},{price}元, 库存{stock},{category})# 用列表解包传参record_list[商品A,128.5,50,电子]add_record(*record_list)# 等价于 add_record(商品A, 128.5, 50, 电子)# 用字典解包传参record_dict{name:商品B,price:99.9,stock:200,category:服装}add_record(**record_dict)# 等价于 add_record(name商品B, price99.9, ...)# RPA场景从Excel读取一行数据直接传给函数excel_row[商品C,59.9,120,食品]# 从Excel读取的一行add_record(*excel_row)有什么坑坑1可变默认值陷阱现象函数参数默认值设为空列表def func(items[])多次调用发现数据串了。defadd_item(item,items[]):# 危险items.append(item)returnitemsprint(add_item(A))# [A]print(add_item(B))# [A, B] ← 不是[B]原因默认值在函数定义时只创建一次所有调用共享同一个列表对象。解决用None作为默认值在函数内部创建新对象defadd_item(item,itemsNone):ifitemsisNone:items[]items.append(item)returnitems坑2位置参数和关键字参数顺序错误现象func(1, b2, 3)报错SyntaxError。原因位置参数必须在关键字参数前面。解决要么全用位置参数func(1, 2, 3)要么全用关键字func(1, b2, c3)不能混排。坑3*args和位置参数的混淆现象def func(*args, x)调用func(1, 2, 3)报错缺少x。原因*args会吃掉所有位置参数后面的x只能用关键字传。解决func(1, 2, x3)。这种仅关键字参数的写法在影刀中封装配置函数时很有用defcreate_task(name,*,prioritynormal,timeout30):# priority和timeout必须用关键字传passcreate_task(采集任务,priorityhigh,timeout60)坑4函数参数太多导致调用混乱现象一个函数有10个参数调用时根本记不住顺序容易传错。解决参数超过5个时考虑用字典或对象传参。或者全部用关键字参数强制用*分隔defconfigure_scrape(*,url,methodGET,timeout30,retry3,encodingutf-8):# 所有参数都必须用关键字传passconfigure_scrape(urlhttps://example.com,retry5)坑5影刀Python代码块中函数定义的作用域现象在影刀的【执行Python代码】指令中定义了函数下一个【执行Python代码】指令中调用不到。原因每个Python代码块是独立执行的函数定义不会跨代码块保留。解决把函数定义和调用放在同一个Python代码块中。或者把函数写在一个.py文件里通过import导入。或者在主流程中用【设置变量】存储函数不推荐影响可读性。最佳实践是把完整的业务逻辑封装在一个Python代码块中。

相关新闻

2026/9/3 16:45:49

Git bundle 与 tar/zip 备份对比:2种方案性能与完整性实测

Git Bundle 与 Tar/Zip 备份方案深度对比:性能与完整性实测报告在代码版本管理和数据备份领域,Git bundle 和传统的文件系统打包工具(如 tar、zip)是两种截然不同的技术路线。本文将通过 12 项核心指标的系统性测试,揭…

2026/9/3 5:15:23

VS Code C# Dev Kit 1.0 配置指南:5个必装插件与 .NET 8 项目创建实战

VS Code C# Dev Kit 1.0 配置指南:5个必装插件与 .NET 8 项目创建实战微软最新推出的C# Dev Kit扩展包彻底改变了VS Code的.NET开发体验。作为从Visual Studio迁移过来的老用户,我发现这套工具链不仅保留了VS的核心功能,还带来了更轻量高效的…

2026/9/4 1:26:04

模型金属贴片烧钛工艺全流程:从打磨到上色的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 1:26:04

用Claude Code搭建评测环境:验证Claude对对齐研究者的行为差异

“面对对齐研究者,Claude 会心虚”——这句话最近在 AI 安全相关讨论里被反复引用。先别急着把它当成一个心理学结论,这更像是一个有待验证的现象描述:当用户自称是“对齐研究者”或“安全评估人员”时,Claude 的回答会不会变得更…

2026/9/4 1:21:04

C++/Qt桌面应用开发入门:从环境搭建到实战项目

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 18:28:26

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/4 0:00:58

STM32H743 SPI从机DMA双缓冲通信实战

简介:本资源是面向嵌入式开发工程师与STM32进阶学习者的SPI DMA双机通信从机端完整实现方案,聚焦STM32H743高性能Cortex-M7单片机在工业控制与高速数据交互场景下的从机通信开发痛点。压缩包含1355个文件,主体为599个C源码与321个头文件&…

2026/9/4 0:00:58

CPU开盖降温教程:20元成本让温度直降30度的原理与实践

最近很多朋友都在抱怨,自己的电脑一到夏天就变成"烤箱",玩游戏时CPU温度动不动就飙到90度以上,风扇噪音堪比直升机。更让人头疼的是,明明配置不错,却因为高温降频导致性能大打折扣。如果你也遇到了类似问题&…

2026/9/4 0:00:58

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验 App 14「运动场地预约」场地 Tab(Func1Tab),是整 App 交互最丰富的页面——场地横向切换 三色图例 渐变预约预览卡 快捷模板 今日场次 Grid(可选/已选/已满三态&…

2026/9/3 20:43:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/3 17:51:43

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/3 21:06:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…