一、背景
对于新手小白来说,变量的使用是一个头疼的问题。可能常常会出现:变量不知道如何定义,变量定义了却选不了;不知道如何获取自己想要的变量内容;变量在影刀中如何实现运算……等等的情况
针对以上的情况,我们选取了一些有针对性的案例,进行汇总和说明。在此基础上,举一反三,帮助大家后续在使用影刀进行开发时,尽可能规避掉这些问题。
此外, 若对什么是变量、怎么创建和调用变量存疑,可以查看文档:变量 - 影刀帮助中心。
二、案例讲解
案例1:找不到之前已经定义/赋值的变量
1.1 匹配不了Excel对象、Excel对象为空
【原因】
以上两类操作,Excel对象名称都被二次赋值为列表名称,导致流程中Excel对象的定义错乱,故无法进行Excel对象的选择和引用。
【解决方案】
在定义Excel对象时,要注意不要用不同的变量类型/内容,去重复定义同一个Excel对象。
比如,第一张图中,批量抓取数据的结果,可以保存到excel_instance_2中;比如,第二张图中,读取的Excel内容,可以保存为安全库存_2。
【举一反三】
在定义Excel对象时,要注意不要用不同的变量类型/内容,重复定义同一个对象。
1.2 找不到想要的变量
【原因】
以上的流程中,设置的变量都在一个“闭环体”内;而引用变量时,是在“闭环体”外。闭环已经结束,里面的东西自然没法再出来。
【解决方案】
【解决方案一】
在流程内使用变量,或者在流程外定义变量
比如,第一张图中,我们应该在循环体内使用变量,将打印日志放在循环结束之前;比如,第二张图中,我们可以在Try-Catch流程之外,就先定义一个“处理结果”的变量
【解决方案二】
将需要引用的变量设置全局变量。具体有关全局变量的解释,可参考社区链接文章:【其他】如何使用影刀“全局变量”-问答-影刀RPA开发者社区
【举一反三】
我们在使用【循环】【IF】【Try】【Catch】这些指令时,都会存在一个闭环的过程,所以在引用变量时,需要特别注意区分,变量是在“闭环体”内,还是在“闭环体”内。
案例2:流程提示——未定义变量
【原因】
以上的流程中,变量-全局变量都没有被正确引用
【解决方案】
首先,引用全局变量时,需要在全局变量外层套glv[]。如图一中,调用全局变量时应该为glv['gvar'[''PY]].
其次,不要直接点击'运行指令',而是直接点击'运行',详见下图。如图二则是由于点了指令中的运行导致的
【举一反三】
在调试变量时,首先减少指令内'运行指令'的使用;
其次,参考文档-变量未被定义:变量未被定义,无法使用(NameError: name '' is not defined) - 影刀帮助中心
案例3:如何实现python流程中变量值的传递
【方法一】通过调用函数,进行出入参设置
【方法二】通过点亮python表达式模式直接引用
案例4:变量无法进行四则运算
【原因】
使用Python表达式做四则运算时,变量类型应该是整数、或者小数。
【解决方案】
【解决方案一】
设置变量时,优先修改variable的变量类型(字符串)为整数or小数
【解决方案二】
在做四则运算时,使用"int()"/"float()"转换字符串类型,具体可参考下图
【举一反三】
在做变量的四则运算时,首先确保变量的类型是整数或者小数。
三、总结
以上5个案例总结了我们在使用变量的过程中,会遇到的一些问题。希望通过案例的剖析和归纳,能够给大家提供一些在日常使用变量过程中解决问题的思路和避免问题的方法。
也欢迎大家补充和指正~