欢迎光临
我们一直在努力

影刀RPA零基础教程_深度理解影刀变量类型作用域与常见陷阱

影刀RPA零基础教程:深度理解影刀变量——类型、作用域与常见陷阱

影刀的变量是流程里传递数据的"容器"。

但很多新手用了很久的影刀,对变量的理解还停留在"拖一个赋值指令"的层面。

遇到变量在循环里被意外修改、跨子流程拿不到数据、全局变量莫名其妙被清空这些问题时,完全摸不着头脑。

这篇文章把变量这件事说透。


在这里插入图片描述

一、影刀变量的三种类型

类型1:普通变量(最常用)

在当前流程内有效,关闭应用或跳出流程后消失。

# 赋值
商品名 = "连衣裙"
价格 = 89.0
是否成功 = True
数据列表 = ["a", "b", "c"]

影刀支持的数据类型:字符串、数字(整数/浮点数)、布尔值(True/False)、列表、字典、表格对象。

类型2:全局变量

跨子流程、跨应用调用时可见。在一个子流程里设置,另一个子流程里可以直接读取。

在这里插入图片描述

关键区别:普通变量在子流程里是"副本"(传进去的是值,不影响外面),全局变量是"共享"(所有流程看到同一份数据)。

类型3:循环变量

只在循环体内有效的迭代变量,比如"遍历列表"时的 当前项。

店群矩阵自动化突破运营极限!

循环结束后,循环变量的值保留为最后一次迭代的值(如果在循环外引用)。


二、变量赋值的4种方式

在这里插入图片描述

# 方式1:直接赋值指令
商品名 = "连衣裙"

# 方式2:从元素获取(最常用)
获取元素文本("//h1[@class='title']") > 商品名

# 方式3:从上一步指令的输出获取
读取Excel("D:\\数据.xlsx") > 表格对象
获取表格行数(表格对象) > 总行数

# 方式4:Python代码里赋值
# 在"Python代码"指令里,用 result 变量返回给影刀
result = str(round(价格 * 0.8, 2)) # 计算8折价


三、作用域陷阱:子流程的变量是隔离的

这是新手最常掉进去的坑。

主流程里定义了 商品名 = "连衣裙",在子流程里 输出日志(商品名) 会报错"变量不存在"。

原因:子流程有自己独立的变量空间,主流程的变量不会自动传进去。

正确做法:通过参数传递

在这里插入图片描述

# 主流程
商品名 = "连衣裙"
调用子流程(采集商品详情, 参数=[商品名]) # 把变量作为参数传进去

# 子流程定义时,设置输入参数名
# 输入参数:product_name(接收主流程传来的商品名)
输出日志(product_name) # 在子流程里用参数名访问

如果子流程需要把结果传回主流程,设置"输出参数":

# 子流程
# 设置输出参数:result_data
result_data = 采集到的结果

# 主流程
调用子流程(采集商品详情, 参数=[商品名]) > 返回值
# 返回值就是子流程的 result_data


四、全局变量的正确用法

全局变量适合存"整个流程生命周期里需要共享的状态"。

适合用全局变量的场景:

在这里插入图片描述

  • 登录态标记(是否已登录)
  • 运行计数器(已处理了多少条)
  • 配置参数(Webhook 地址、目标 URL)
  • 错误计数(今日失败了多少次)

不适合用全局变量的场景:

  • 循环变量(循环里的当前项,用普通变量就好)
  • 临时中间值(临时计算结果,函数内部自己用完就丢)

设置全局变量:

# 在影刀里,拖入"设置全局变量"指令
# 变量名:login_status
# 值:True

读取全局变量:

# 拖入"获取全局变量"指令
# 变量名:login_status
# 赋值给:当前登录状态
![在这里插入图片描述](https://iblog.csdnimg.cn/direct/e7a6f19624c24e66a4338fb30b017ec1.png#pic_center)


五、列表变量的操作

影刀里的列表和 Python 的 list 基本一致。

# 创建列表
采集结果 = []

# 追加元素
采集结果.append("商品A")
采集结果.append("商品B")

# 获取长度
总数 = len(采集结果)

# 遍历
遍历列表(采集结果, 当前项):
输出日志(当前项)

# 获取第N个元素(从0开始)
第一个 = 采集结果[0]

# 检查是否包含某元素
如果 "商品A" in 采集结果:
输出日志("存在")


六、字典变量的操作

字典用来存结构化数据,比列表多一个"键"来访问数据。

temu店群自动化报活动案例

在这里插入图片描述

# 创建字典
商品信息 = {
"name": "连衣裙",
"price": 89.0,
"sales": 1234
}

# 读取值
价格 = 商品信息["price"]
价格 = 商品信息.get("price", 0) # 带默认值,安全

# 修改值
商品信息["price"] = 99.0

# 遍历字典
遍历字典(商品信息,,):
输出日志(f"{}: {}")

# 检查键是否存在
如果 "discount" in 商品信息:
折扣 = 商品信息["discount"]


七、类型转换:数字和字符串之间

从网页采集到的数据几乎都是字符串,做计算前必须转换。

# 字符串 → 数字
价格字符串 = "89.00"
价格数字 = float(价格字符串)

# 字符串 → 整数
数量字符串 = "1234"
数量整数 = int(数量字符串)

# 数字 → 字符串(写入表格或拼接文字时用)
价格文本 = str(价格数字)
日期文本 = str(20260610)

# 带格式的数字 → 数字(去掉¥、逗号)
import re
原始文本 = "¥1,234.56"
干净数字 = float(re.sub(r'[^0-9.]', '', 原始文本))


八、常见变量陷阱速查

陷阱1:循环里累加变量忘了初始化

在这里插入图片描述

# 错误:total 没有初始化,第二次运行时会叠加上次的值
遍历行(数据表):
total += 当前行价格 # ❌ 如果 total 没有初始赋值,第一次会报错

# 正确:循环前先初始化
total = 0
遍历行(数据表):
total += 当前行价格 # ✅

陷阱2:列表变量被意外共享

# 陷阱:两个变量指向同一个列表
列表A = []
列表B = 列表A # 这不是复制,而是"引用"
列表B.append("x")
输出日志(列表A) # 输出 ['x'],因为两者指向同一个对象

# 正确:用 copy() 创建独立副本
列表B = 列表A.copy()

陷阱3:字符串拼接用 + 时忘了转换类型

# 报错
文件名 = "数据" + 当前日期 + ".xlsx" # 如果 当前日期 是 date 对象会报错

# 正确
文件名 = "数据" + str(当前日期) + ".xlsx"
# 或者用 f-string
文件名 = f"数据{当前日期}.xlsx"

陷阱4:变量名拼写错误(最难查)

# 声明时
商品名称 = "连衣裙"

# 使用时
![在这里插入图片描述](https://iblog.csdnimg.cn/direct/49cfa85f0f8c4b0892c215fe440c1570.png#pic_center)

输出日志(商品名) # 报错,因为名字不对(少了"称")


#影刀RPA #RPA变量 #影刀零基础教程 #自动化编程 #影刀新手入门

作者:林焱

本文为影刀RPA系列文章之一,内容源于实操经验整理与分享。 在这里插入图片描述

赞(0)
未经允许不得转载:171主机测评 » 影刀RPA零基础教程_深度理解影刀变量类型作用域与常见陷阱
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址