aardio 文档

py3 库模块帮助文档

py3 成员列表

Python 3 扩展库,
已自带绿色便携运行时,不用额外安装VC运行库。
导入库时可指定小版本号,例如 py3,py3.4,py3.6,py3.10 等。

py3 扩展库默认 Python 版本为 3.8.10。
Python 不同版本通常并不完全兼容,不建议随意更换运行时,
添加 Python 模块时也应使用相同版本运行时下安装的版本

如果需要在 Python 中使用 print 函数输出到控制台
请在导入库以前打开控制台

py3.DecRef(指针)

减少引用计数

py3.IncRef(指针)

增加引用计数

py3.addModule("字符串参数")

如果不存在指定名字的模块就创建新模块
返回模块对象

py3.addModule()

返回对象:py3ModuleObject

py3.addSiteDir()

添加 site-packages 站点目录,
Python 也会在站点目录下查找模块,且支持该目录下的 *.pth 。
默认已添加安装模块的默认目录 "\py\site-packages",
site.USER_BASE 默认设为工程下的 /py 目录,不允许修改

py3.appendPath

添加 Python 模块搜索目录,
也就是追加目录到 Python 中的 sys.path。

默认的模块搜索目录为『应用程序根目录』下的 /py 目录

py3.appendPath("搜索路径")

添加 Python 模块搜索目录,
也就是追加目录到 Python 中的 sys.path 支持多个参数。
支持多参数指定多个要添加的路径

py3.builtin

builtin 模块提供 Python 内置函数

返回对象:py3DictObject

py3.compile("字符串参数")

编译字符串或py文件
返回代码对象
可选增加第二个参数
可选增加第二个PyCompilerFlags参数

py3.compile()

返回对象:py3CodeObject

py3.eval("python表达式")

main 模块中计算表达式的值

py3.eval()

返回对象:py3Object

py3.exec

运行 Python 代码,
参数也可以指定内嵌资源文件路径
注意需要引用的 Python 模块应当放在 /py 目录下,
aardio 路径以斜杠或反斜杆开始则表示应用程序根目录下的路径,
应用程序根目录开发时为 aardio 工程目录,发布后为 EXE 文件所在目录

py3.exec("Python代码",flags,...)

在默认的__main__名字空间运行 Python 代码,成功返回 true。
在导入 py3 扩展库前调用 console.open 可查看 Python 错误信息。

参数@1如果首字符为单个斜杠或反斜杆开始的文件路径:
└── 可支持工程资源目录下的文件。
└── 如果文件后缀为 ".aardio" 则支持 aardio 模板语法。

可选使用参数 @2 设置 PyCompilerFlags 参数,
参数@2不必指定,用法参考 Python 文档。

参数@3 开始可选指定一个或多个启动参数,
注意不必像 py3.setArgv 函数那样在首个参数中指定启动程序路径

py3.execf

首先调用 string.format 格式化代码
然后执行格式化后的代码

py3.execf("Python代码",...)

首先调用 string.format 格式化参数并生成代码,
然后执行格式化后的代码。

详细用法请参考
格式化字符串

py3.execfile

运行 *.py 文件
注意需要引用的 Python 模块应当放在 /py 目录下,
aardio 以斜杠或反斜杆开始则表示应用程序根目录下的路径,
应用程序根目录开发时为 aardio 工程目录,发布后为 EXE 文件所在目录

py3.execfile("Python文件路径",flags,...)

运行 *.py 文件,成功返回true,
参数@1如果以斜杠或反斜杆开始则表示应用程序根目录下的路径,
应用程序根目录开发时为 aardio 工程目录,发布后为 EXE 文件所在目录,
可选用 参数@2 设置 PyCompilerFlags 参数,
可选增加任意个启动参数,即 sys.argv 参数

py3.export()

参数应指定 aardio 对象,
table、cdata、class、function 类型参数转换为 Python 代理对象,
支持导出 aardio 迭代器,注意迭代器返回 tuple 元组,
其他类型参数直接返回不作转换。

py3.export 创建的代理对象会绑定原始的 aardio 对象,
在 Python 中调用代理对象时都会转发调用到 aardio 对象,
对返回代理对象的所有调用也会同样经过 py3.export 处理。

未经 py3.export 处理的 aardio 对象传入 Python 时,
只会复制可能复制的值为纯 Python 对象,且不再关联原始对象

返回对象:py3Object

py3.float()

调用 Python 的 float 函数,
参数可指定 aardio 或 Python 中可转为浮点数的对象,
创建 Python 浮点数并返回 py.object 对象,
返回的 Python 对象支持 +,-,*,/,%,<,>,<=,>=,== 等运算符

返回对象:py3Object

py3.getDict(模块指针)

相当于Python模块对象的__dict__ 属性,得到模块名称空间下的字典对象

py3.getPath()

返回默认搜索路径
以分号隔开

py3.getProgramName()

返回程序名

py3.getPythonHome()

返回python目录

py3.globals()

全局名字空间

返回对象:py3DictObject

py3.import("字符串参数")

导入模块,相当于Python内建函数__import__()
返回模块指针

py3.import()

返回对象:py3ModuleObject

py3.int()

调用 Python 的 int 函数,
参数可指定 aardio 或 Python 中可转为整型数值的对象,
创建 Python 整型数并返回 py.object 对象,
返回的 Python 对象支持 +,-,*,/,%,<,>,<=,>=,== 等运算符,
aardio 数值默认会转换为 Python 中的浮点数,
如果参数需要用到整型数,可使用此函数创建整型数,
也可以在 Python 代码中调用 int 函数转换

返回对象:py3Object

py3.json

Python的json模块

返回对象:py3ModuleObject

py3.lasterr()

如果 Python 已发生异常,
返回错误信息,以及异常类名称,
调用此函数会清除异常

有些 Python 输出到控制台的错误信息这个函数获取不到。
必须在导入 py3 扩展库以前调用 console.open 才能看到

py3.locals()

局部名字空间

返回对象:py3DictObject

py3.lock( 回调函数,... )

py3.lock( 回调函数,...lock(  
    function(){  
        /*释放GIL以后所有调用python代码必须写到这里*/     
    }  
)

py3.main

Python的__main__模块

返回对象:py3ModuleObject

py3.mainThread

当前是否 Python 主线程
Python 有全局锁所以无法实现真正的多线程,
为避免不必要的麻烦,建议尽量在单线程里使用 Python

py3.occurred()

Python 是否发生异常

py3.releaseThread()

释放GIL线程锁
调用此函数以后,所有调用python的代码必须在py3.lock中运行
否则将导致进程异常退出,请小心使用,
python没有真正多线程,尽可能不要使用此函数以带来不必要的麻烦

py3.run(...)

直接输入启动参数启动 Python 解释器
类似调用 python.exe

注意 py3.10 扩展库会在执行此函数时重置 sys.path
低于 py3.10 版本不会重置 sys.path

py3.set()

调用 Python 的 set 函数,
参数可指定 aardio 或 Python 中可转为集合的对象,
创建 Python 集合并返回 py.object 对象

返回对象:py3Object

py3.setArgv("启动参数")

设置sys.argv启动参数,
参数可以是任意个字符串参数,
也可传入一个字符串数组。

注意第 1 个参数应当指定启动程序路径,
Python 从第 2 个参数开始取实际参数

py3.setPath()

设置默认搜索路径
以分号隔开

py3.setProgramName("字符串参数")

修改程序名

py3.setPythonHome("字符串参数")

改变python应用程序目录

py3.str()

调用 Python 的 str 函数,
参数可指定 aardio 或 Python 中可转为字符串的对象,
创建 Python 整型数并返回 py.object 对象,
py.object 对象都提供 toString 函数可转为 aardio 字符串,
也可以在 aardio 中使作为 tostring 函数的参数转为普通字符串

返回对象:py3Object

py3.sysObject("名字")

获取sys对象

py3.sysObject()

返回对象:py3Object

py3.toString()

参数指定 py.object 对象或 pyObject 原生指针,
调用 Python 内置函数 str 转换为字符串对象,
最后转换并返回为 aardio 字符串
失败返回null

此函数不会检查参数类型是否正确,
参数如果不是 py.object 对象或 pyObject 指针则会导致异常或崩溃

py3.version

返回python内核版本
字符串值

::Python3 成员列表

::Python3.?

可输入API函数名并直接调用

::Python3.api("Py输入函数名字","void()" )

声明加载的Python3 API函数

py3.export 成员列表

注意只能在 Python 启动线程中使用此功能,
export 作为名字空间使用时,
export 名字空间的 aardio 成员对象,
可在 Python 中使用 import 语句导入

export 作为类构造函数使用时,
可导出 aardio 对象为 Python 代理对象,
调用 Python 代理对象会转发到 aardio

py3.export.?

{ __/*这里定义的成员函数可在 Python 中调用*/ }

py3CodeObject 成员列表

py3CodeObject.eval()

运行python代码并返回值
可选增加两个参数,指定全局名字空间,局部名字空间
名字空间必须是py3.dict()字典对象

返回对象:py3Object

py3CodeObject.exec("字符串参数")

运行python代码并返回模块对象

返回对象:py3ModuleObject

全局常量

::Python3

加载的Python3.DLL模块

自动完成常量

_Py_eval_input=258
_Py_file_input=257
_Py_single_input=256

Markdown 格式