影刀RPA 函数参数详解:位置参数、关键字参数、默认值

发布时间:2026/9/23 14:16:14

影刀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代码块中。

相关新闻

Kimi    LeetCode 3544. 子树反转和 C语言实现

Kimi LeetCode 3544. 子树反转和 C语言实现

2026/9/8 13:35:03

以下是 LeetCode 3544. 子树反转和 的 C 语言实现。解题思路本题使用树形 DP 记忆化搜索。状态定义:dp(u, steps, inv) - u:当前节点 - steps:距离最近的一次祖先反转已经经过了多少步(上限为 k)。当 steps k 时&…

Kimi    LeetCode 3547. 图中边值的最大和 Python3实现

Kimi LeetCode 3547. 图中边值的最大和 Python3实现

2026/8/25 13:52:11

以下是 LeetCode 3547. 图中边值的最大和 的 Python3 实现。解题思路由于每个节点最多与其他两个节点相连,整个图由若干链和环组成。1. 连通分量分类:用 DFS/BFS 找出所有连通分量。若分量内所有节点度数均为 2,则为环;否则为链&a…

GHelper完整指南:5步轻松掌控华硕笔记本性能,告别臃肿官方软件

GHelper完整指南:5步轻松掌控华硕笔记本性能,告别臃肿官方软件

2026/8/31 7:06:36

GHelper完整指南:5步轻松掌控华硕笔记本性能,告别臃肿官方软件 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vi…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/21 18:38:46

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/21 18:41:09

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

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/21 18:36:40

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/21 18:37:26

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/21 18:40:29

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

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/21 18:36:17

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/22 0:19:28

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/21 23:38:13

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/22 0:48:53

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…