函数参数定义及引用
本节介绍 FuncStudio 函数参数的定义及引用功能。
主要用途
用于配置函数的外部接口,并且通过运行标签页的参数方案来更改算法内核的输入。
参数定义及引用流程
定义函数参数列表
用户可在 FuncStudio 接口标签页的参数列表内根据需求自定义参数名、参数数据类型、参数范围等。
参数列表被分为参数组-参数两个层级,两个层级为包含关系,即一个函数可含有若干参数组,每个参数组可含有若干参数。
XStudio 提供了统一的参数列表配置方法,支持实数、整数、文本、布尔、选择、多选、表格以及虚拟引脚 9 种类型参数的定义。
每种类型参数的定义详见 参数列表定义。
配置参数方案
定义好的参数列表后,运行标签页方案下的默认参数方案里面会将参数列表显示出来,用户可以选择或添加参数方案,通过修改当前方案下的参数值,更改函数内核的输入。
-
当用户修改参数列表后(包括类型和默认值),已有的参数方案不会更新,需要手动修改;
-
添加新的参数方案会更新。
函数内核中引用参数方案
配置好参数方案后,用户可在函数内核 中利用 FuncStudio SDK 引用当前参数方案作为内核输入量进行计算。
不同语言编写的内核引用参数方案的格式有所区别:
- 本地 Python 内核
- 本地 Matlab 内核
- 云端 JavaScript 内核
对于 Python 内核通过 args.键
的接口获取。
import cloudpss #导入安装好的CloudPSS-SDK
if __name__ == '__main__':
job = cloudpss.currentJob() #获取函数在当前参数方案下的计算任务实例
a = job.args.a #利用 SDK 提供的 args 方法获取键为 a 的参数在当前方案下的值
b = job.args.b #获取键为 b 在当前参数方案下的值
对于 Matlab 内核通过 args.{'键'}
的接口获取。
cloudpss.utils.syncenv; %同步环境变量
cloudpssMod = py.importlib.import_module('cloudpss'); %加载 CloudPSS-SDK
job = cloudpssMod.currentJob(); %获取函数在当前参数方案下的计算任务实例
a = job.args{'a'}; %利用 SDK 提供的 args 方法获取键为 a 的参数在当前方案下的值
b = job.args{'b'}; %获取键为 b 在当前参数方案下的值
对于 JavaScript 通过 args.键
的方式获取。
export default async function* (args,signal,env) {
yield "hello, "+args.name+"!" // #利用 SDK 提供的 args 方法获取键为 name 的参数在当前方案下的值
yield "Good bye, "+args.name+"!"
}
不同类型的参数引用方式不同:
- 布尔/选择/多选
- 表格
- 实数/整数/文本
对于布尔、选择和多选等选项类型的参数,直接通过键名引用到的是每个选项的键。
布尔类型的参数通过 args.Switch
获取的是选项的键,1 或者 0
。
选择类型的参数通过 args.Control
获取的是选项的键,1 或者 2
。
多选类型的参数通过 args.MultiSelect
获取的是选项的键,比如,多选“选项 1”、“选项 2”、“选项 3”
获取的值就是 ['1','2','3']
。