影刀RPA进阶教程:流程参数输入输出与变量作用域完全指南

子流程里改了变量,主流程里没变。主流程定义的变量,子流程里读不到。输出参数明明赋值了,调用方拿到的是空。这些问题的根因都是同一个:没搞懂影刀RPA的变量作用域和参数传递规则。

影刀RPA的变量不是全局共享的,每个流程和子流程有独立的作用域。 数据进出子流程,必须通过输入输出参数显式传递。

这篇把变量作用域、输入输出参数配置、值传递与引用传递的区别一次讲透,每个操作精确到按钮。

picture.image

影刀RPA变量作用域的三层结构

影刀RPA的变量分三层,作用范围完全不同。

① 流程变量:在当前流程内有效。主流程定义的变量,子流程默认读不到。

picture.image

② 子流程输入参数:调用子流程时传入的值。子流程内部只能读,不能改调用方的原始变量。

③ 子流程输出参数:子流程返回给调用方的值。子流程结束前必须赋值,否则调用方拿到空。

操作路径:双击进入子流程 → 点击右上角“流程属性” → 在“输入参数”和“输出参数”区域添加。

picture.image 这里很容易踩坑,注意看:主流程的变量名和子流程的输入参数名可以不同。调用时在“调用子流程”指令中做映射,不要指望名字一样就能自动传。

版本差异提醒:影刀RPA社区版每天30分钟运行时长,调试参数传递够用。创业版无限制,适合维护大型多子流程项目。魔法指令(3.0新特性)可对话式生成参数配置,但作用域逻辑还是手动配更稳。

输入参数配置:从主流程传数据进子流程

输入参数是子流程接收外部数据的入口。配置分两步:子流程定义,主流程传值。

picture.image

子流程定义输入参数:

  1. 双击进入子流程。
  2. 点击右上角“流程属性”。
  3. 在“输入参数”区域点“添加”。
  4. 参数名填 str_关键词,类型选“字符串”,默认值留空。

picture.image 5. 再添加 int_最大页数,类型选“整数”,默认值填 10。

主流程调用时传值:

  1. 在主流程拖入“调用子流程”指令。
  2. 在指令详情面板中,“子流程名称”下拉选择目标子流程。
  3. “输入参数”区域,把主流程的变量填进去:str_关键词 选 $搜索关键词$,int_最大页数 选 $页数上限$。

picture.image

# 影刀RPA子流程内部使用输入参数
# 直接引用参数名,不用加$符号在Python里
# 如果是在影刀RPA指令中引用,用 $str_关键词$

# Python代码中读取输入参数

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/bf9d0f07dc9042cabde3ff087bbd0ca9~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1791901533&x-signature=jvzhzAnTuCAubX8%2Fq%2FgYMp7QDr0%3D)
keyword = str_关键词
max_pages = int_最大页数
print(f"搜索关键词:{keyword},最大页数:{max_pages}")

推荐一个方法,实测好用:给输入参数设默认值。单独运行子流程调试时,不用手动填参数,直接跑。

输出参数配置:从子流程传数据回主流程

输出参数是子流程返回结果的出口。必须在子流程结束前赋值。

子流程定义输出参数:

  1. 在“流程属性”的“输出参数”区域点“添加”。
  2. 参数名填 dt_采集结果,类型选“数据表格”。
  3. 再添加 int_采集条数,类型选“整数”。

子流程内部赋值:

# 影刀RPA子流程末尾,给输出参数赋值
dt_采集结果 = 数据表格变量  # 把采集到的表格赋给输出参数
int_采集条数 = len(数据表格变量)  # 计算条数

# 注意:输出参数必须在子流程结束前赋值
# 如果中途报错退出,输出参数是空的

主流程接收:

  1. 在“调用子流程”指令的“输出参数”区域,把子流程的输出参数映射到主流程变量。
  2. dt_采集结果 赋给 $主流程采集结果$。
  3. int_采集条数 赋给 $总条数$。

这里很容易踩坑,注意看:如果子流程中途报错,Catch块里也要给输出参数赋默认值。否则主流程拿到的是空值,后续处理会报类型错误。

值传递与引用传递:数据表格和列表的特殊性

影刀RPA的参数传递分两种:值传递和引用传递。

值传递:字符串、数字、布尔。子流程改这些参数,不影响主流程的原始变量。

引用传递:数据表格、列表。子流程改这些参数的内容,主流程的原始变量也会变。

# 影刀RPA中值传递示例
# 主流程:str_关键词 = "护肤品"
# 子流程内:str_关键词 = "化妆品"
# 子流程结束后,主流程的 str_关键词 还是 "护肤品"

# 影刀RPA中引用传递示例
# 主流程:dt_数据 = 表格变量(有3行)
# 子流程内:往 dt_数据 里追加一行
# 子流程结束后,主流程的 dt_数据 变成4行

容易踩的坑:如果不想让子流程修改原始数据表格,在传入前先复制一份。影刀RPA中可以用“复制数据表格”指令,或Python的 copy.deepcopy()。

import copy

# 子流程内,先深拷贝再修改
dt_本地副本 = copy.deepcopy(dt_输入数据)
# 后续操作 dt_本地副本,不影响主流程的原始数据

常见问题与易错速查

问题原因解决方法
子流程读不到主流程变量作用域隔离用输入参数传入
输出参数为空中途报错退出Catch块赋默认值
主流程变量被意外修改引用传递传副本或声明不修改
参数类型不匹配类型选错定义时选对类型
社区版超时30分钟限制分批次或升级创业版

特别提醒:输入输出参数的命名用英文前缀,和变量命名规范一致。不要用中文,影刀RPA表达式里中文参数容易识别错。

推荐资源

  • 影刀RPA官方文档:搜索“流程参数”和“子流程”
  • 影刀学院B站账号:有参数传递实战视频
  • Python官方文档:copy模块深拷贝与浅拷贝

一个实测好用的习惯:每写完一个子流程,先单独运行测试输入输出参数是否正确。确认无误再接入主流程。省掉在主流程里排查参数错误的麻烦。


#影刀RPA #RPA自动化 #流程参数 #变量作用域 #子流程 #开发规范

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论