# 第三方交互 / Python

本页记录 `TSLPy` Python 客户端接口；与 TSL builtin 或 dotnet 同名的函数属于跨语言绑定，不是重复的 TSL 声明。

## `defaultConnectAndLogin(alias)`

声明：function

通过配置文件登录

<!-- tags: 连接 会话 认证 文件系统 文档文件 Python 跨语言调用 远程执行 -->

| 参数    | 类型   | 说明             |
| ------- | ------ | ---------------- |
| `alias` | string | 字符串。配置别名 |

返回：tuple

## `connectServer(addr, port, proxy_info)`

声明：function

连接天软服务器。如果用户是使用代理服务器进行连接，可使用ProxyInfo 参数传入相关信

<!-- tags: 会话 服务端 网络服务 Python 跨语言调用 远程执行 -->

| 参数         | 类型    | 说明                                                                            |
| ------------ | ------- | ------------------------------------------------------------------------------- |
| `addr`       | string  | 字符串。地址                                                                    |
| `port`       | integer | 整数。端口                                                                      |
| `proxy_info` | list    | 列表。代理信息，依次为代理地址、代理端口、代理用户名、代理密码、代理模式。 特别 |

返回：integer

## `loginServer(user, pass)`

声明：function

登录天软服务器。占用登录数相关说明可参考：TSLPy 模块中，通过 ConnectServer 多次连接

<!-- tags: 会话 认证 服务端 网络服务 Python 跨语言调用 远程执行 -->

| 参数   | 类型   | 说明             |
| ------ | ------ | ---------------- |
| `user` | string | 字符串。用户账号 |
| `pass` | string | 字符串。用户密码 |

返回：tuple

## `disconnect()`

声明：function

断开连接

<!-- tags: 会话 注销 Python 跨语言调用 远程执行 -->

返回：nil

## `logined()`

声明：function

判断是否登录

<!-- tags: 检查 判定 验证 认证 Python 跨语言调用 远程执行 -->

返回：boolean

## `setService(service)`

声明：function

设置服务器类型

<!-- tags: 配置 服务端 网络服务 Python 跨语言调用 远程执行 -->

| 参数      | 类型   | 说明                                                              |
| --------- | ------ | ----------------------------------------------------------------- |
| `service` | string | 字符串。指定的服务器类型，可参考：Python 中指定天软服务器执行命令 |

返回：nil

## `getService()`

声明：function

获取服务器类型

<!-- tags: 查询 服务端 网络服务 Python 跨语言调用 远程执行 -->

返回：string

## `getComputeBitsOption()`

声明：function

获取服务器计算位数

<!-- tags: 查询 计算位数 服务器架构 -->

返回：integer

## `remoteExecute(exec_string, sys_param)`

声明：function

远程执行天软语句

<!-- tags: 调用 远程调用 跨进程 Python 跨语言调用 远程执行 -->

| 参数          | 类型   | 说明                                                         |
| ------------- | ------ | ------------------------------------------------------------ |
| `exec_string` | string | 字符串。 天软语句                                            |
| `sys_param`   | dict   | 可选。字典。天软执行的系统参数，参考系统参数简介。可以为空{} |

返回：tuple

## `remoteCallFunc(func, args, sys_param)`

声明：function

远程执行天软函数

<!-- tags: 调用 远程调用 跨进程 Python 跨语言调用 远程执行 -->

| 参数        | 类型        | 说明                                                                                                                                                                                               |
| ----------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `func`      | string      | 字符串。 天软函数名                                                                                                                                                                                |
| `args`      | list\|tuple | 可选。列表。天软函数的参数 ，可以为空[] 。注意，如果天软函数需要的参数为 表达式类型，直接传递会失败，需要另外实现参数的传递。比如可以重新封装函数，然后传入字 符串并将字符串转换为天软的表达式类型 |
| `sys_param` | dict        | 可选。字典。天软执行的系统参数，参考系统参数简介。可以为空{}                                                                                                                                       |

返回：tuple

## `setSysParam(name, value)`

声明：function

设置系统参数

<!-- tags: 配置 Python 跨语言调用 远程执行 -->

| 参数    | 类型   | 说明               |
| ------- | ------ | ------------------ |
| `name`  | string | 字符串。系统参数名 |
| `value` | any    | 设置系统参数的值   |

返回：nil

## `getSysParam(name)`

声明：function

获得系统参数

<!-- tags: 查询 Python 跨语言调用 远程执行 -->

| 参数   | 类型   | 说明               |
| ------ | ------ | ------------------ |
| `name` | string | 字符串。系统参数名 |

返回：any

## `encodeDate(y, m, d)`

声明：function

在 Python 中构造天软日期。Q：天软的日期是什么格式的？

<!-- tags: 编码 转换 交易日期 日期时间 脚本交互 Python 跨语言调用 远程执行 -->

| 参数 | 类型    | 说明     |
| ---- | ------- | -------- |
| `y`  | integer | 整数。年 |
| `m`  | integer | 整数。月 |
| `d`  | integer | 整数。日 |

返回：float

## `encodeTime(h, m, s, ss)`

声明：function

在 Python 中构造天软时间

<!-- tags: 编码 转换 时间处理 日期时间 脚本交互 Python 跨语言调用 远程执行 -->

| 参数 | 类型    | 说明       |
| ---- | ------- | ---------- |
| `h`  | integer | 整数。小时 |
| `m`  | integer | 整数。分钟 |
| `s`  | integer | 整数。秒   |
| `ss` | integer | 整数。毫秒 |

返回：float

## `encodeDateTime(y, m, d, h, m, s, ss)`

声明：function

在 Python 中构造天软日期时间

<!-- tags: 编码 转换 交易日期 时间处理 脚本交互 Python 跨语言调用 远程执行 -->

| 参数 | 类型    | 说明       |
| ---- | ------- | ---------- |
| `y`  | integer | 整数。年   |
| `m`  | integer | 整数。分钟 |
| `d`  | integer | 整数。日   |
| `h`  | integer | 整数。小时 |
| `m`  | integer | 整数。分钟 |
| `s`  | integer | 整数。秒   |
| `ss` | integer | 整数。毫秒 |

返回：float

## `decodeDate(date)`

声明：function

将天软日期转换到 Python 数组

<!-- tags: 解码 格式化 交易日期 日期时间 列表 集合 脚本交互 Python -->

| 参数   | 类型  | 说明             |
| ------ | ----- | ---------------- |
| `date` | float | 浮点数。天软日期 |

返回：tuple

## `decodeTime(time)`

声明：function

将天软时间转换到 Python 数组

<!-- tags: 解码 格式化 时间处理 日期时间 列表 集合 脚本交互 Python -->

| 参数   | 类型  | 说明             |
| ------ | ----- | ---------------- |
| `time` | float | 浮点数。天软时间 |

返回：tuple

## `decodeDateTime(datetime)`

声明：function

将天软日期时间转换到 Python 数组

<!-- tags: 解码 格式化 交易日期 时间处理 列表 集合 脚本交互 Python -->

| 参数       | 类型  | 说明                 |
| ---------- | ----- | -------------------- |
| `datetime` | float | 浮点数。天软日期时间 |

返回：tuple

## `getData_01(stock_arr, endt)`

声明：function

获取股票列表在指定日期的截面行情数据

<!-- tags: 查询 证券 个股 市场数据 价格数据 交易日期 日期时间 Python -->

| 参数        | 类型       | 说明                   |
| ----------- | ---------- | ---------------------- |
| `stock_arr` | array      | 待查询的股票代码数组   |
| `endt`      | t_datetime | 截面数据对应的查询日期 |

返回：array

## `getData_02(stock_id, begt, endt)`

声明：function

获取单只股票在指定区间的时间序列行情数据

<!-- tags: 查询 时序 序列数据 证券 个股 市场数据 价格数据 时间处理 -->

| 参数       | 类型       | 说明                   |
| ---------- | ---------- | ---------------------- |
| `stock_id` | string     | 待查询的股票代码       |
| `begt`     | tdatetime  | 时间序列查询的开始日期 |
| `endt`     | t_datetime | 时间序列查询的截止日期 |

返回：array

## `pyPutVar(var_name, var_value)`

声明：function

送入 Python 变量

<!-- tags: 脚本交互 Python 跨语言调用 远程执行 -->

| 参数        | 类型   | 说明           |
| ----------- | ------ | -------------- |
| `var_name`  | string | 字符串。变量名 |
| `var_value` | any    | 变量值         |

返回：integer

## `pyGetVar(var_name)`

声明：function

从 Python 获得变量

<!-- tags: 查询 脚本交互 Python 跨语言调用 远程执行 -->

| 参数       | 类型   | 说明           |
| ---------- | ------ | -------------- |
| `var_name` | string | 字符串。变量名 |

返回：any

## `pyRun(python_code, flag)`

声明：function

运行 Python 代码

<!-- tags: 执行 调用 脚本交互 Python 跨语言调用 远程执行 -->

| 参数          | 类型    | 说明                                                                                                                             |
| ------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `python_code` | string  | 字符串。Python 代码串，可执行多行代码。注意，使用空格对齐来确定逻辑层级， 相同空格数代表同一层级，一般推荐使用 4 个空格          |
| `flag`        | integer | 可选。整数。可选参数，默认不被指定。该参数可用于 PyCompileFlags 指定组合的状态，处理 UT F-8 源代码等问题。具体请参考 Python 手册 |

返回：integer

## `pyCall(call_flag, module_name, func_name, ...)`

声明：function

调用 Python 模块中的函数

<!-- tags: 执行 脚本交互 Python 跨语言调用 远程执行 -->

| 参数          | 类型    | 说明                                                                                                                                                                                                                                                                                                                                                        |
| ------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `call_flag`   | integer | 可选。整数。设置结果输出方式与参数输入方式，是一个按位（2 位二进制）的状态组合值， 即取值为二进制的 00，01，10，11 组合。具体含义如下： 位（从低到高位） 位值 参数值 说明 不存在 1（默认值） 直接返回调用函数的结果，参数一个个送入。 第 1 位（结果输出方式） 0 0 或 2                                                                                      |
| `module_name` | string  | 字符串。模块名                                                                                                                                                                                                                                                                                                                                              |
| `func_name`   | string  | 字符串。模块中的函数名。Param1..ParamN 为被调用函数的参数，可以为参数数组， 也可以依次传入参数。支持 Name:Value模式进行命名参数的指定，但依次传入的命名参数方式目 前只在新一代客户端下一代全新测试服务器中支持。当为参数数组时，格式为 array('参数名 1':参 数值 1, ' 参数名 2':参数值 2, …)；当依次传入参数时，格式为参数名 1:参数值 1, 参数名 2:参数值 2,… |
| `...`         | any     | 可选。传给该接口的其余可变参数                                                                                                                                                                                                                                                                                                                              |

返回：any

## `pyError()`

声明：function

获取当前运行 Python 语句时的报错信息

<!-- tags: 查询 执行 调用 错误码 异常诊断 脚本交互 Python 跨语言调用 -->

返回：string

## `pyRelease()`

声明：function

释放 Python 资源，多线程时可以提高效率

<!-- tags: 清理 脚本交互 Python 跨语言调用 远程执行 -->

返回：boolean

## `pyEnsure()`

声明：function

锁定 Python 资源。由于 PyRun、PyPutVar、PyGetVar 会智能锁定，所以用户一般不需要调用

<!-- tags: 执行 线程同步 脚本交互 Python 跨语言调用 远程执行 -->

返回：boolean

## `localExecute(exec_string)`

声明：function

本地执行天软语句

<!-- tags: 调用 本地调用 本机执行 Python 跨语言调用 远程执行 -->

| 参数          | 类型   | 说明             |
| ------------- | ------ | ---------------- |
| `exec_string` | string | 字符串。天软语句 |

返回：tuple

## `localCallFunc(func, args)`

声明：function

本地执行天软函数

<!-- tags: 调用 本地调用 本机执行 Python 跨语言调用 远程执行 -->

| 参数   | 类型        | 说明                 |
| ------ | ----------- | -------------------- |
| `func` | string      | 字符串。天软函数名称 |
| `args` | list\|tuple | 列表。天软函数的参数 |

返回：tuple

### 示例

范例01：调用示例

```tsl
rdo2 unit(tspy_unit).QY_py_cleardiyVar();
a := rdo2 doPython03();//doPython03()中错误代码已修正
return a;
```
