分享

aardio 调用 Python 支持指定命名参数

 只怕想不到 2021-09-14

aardio 虽然小,但很适合借力打力,别的编程语言再强再好也可以为我所用,仅仅是能调用当然是不够的,我们还需要极简洁、极方便、极舒适才能借力打力得痛快。

不同编程语言总是有这样那样的区别,要跨越不同编程语言的障碍 —— 使之变得极简洁、极方便、极舒适并非那么容易。举个小例子, Python 函数可以在调用时指定命名参数,如下:

req = requests.get('https://www.',verify=False)

当在 aardio 中调用 Python 函数时我们要如何指定这些参数呢?!实际上 aardio 并不支持命名参数这种语法,当然我们可以用一个表来代替命名参数,但问题是:有时候我们不需要命名参数,命名参数是可选的,我们不能认为传入一个表就一定是命名参数。

因为调用 Python 函数时传入表参数不一定就是用于命名参数,所以在 Python 扩展库里为 Python 函数对象添加了一个新的 invoke 方法,这个函数的用法如下:

var result = pyObject.inovke( kwargs,arg1,args2, ...)

如果 kwargs 是一个纯表( 没有指定元表 )则将其视为命名参数,否则视为普通匿名参数。我已经更新了 py,py2,py3 等扩展库( Python 的版本太多,而且相互不兼容,这真是令人悲哀的一件事 )添加了上述的 invoke 函数。

然后就发生了有趣的事情,aardio 调用函数的第一个参数如果是表对象,就可以省略外层的 { } ,而且表中的分隔符也可以替换为逗号,于是在新版本中我们可以写出下面的 aardio 代码:

import console;import py3;
var requests = py3.import('requests'); //支持省略命名参发,例如 requests.get.invoke('http://www.');var res = requests.get.invoke( verify=false,'https://www.' );console.log( res.text );
console.pause()

 注意上面这句关键的 aardio 代码:

requests.get.invoke(    verify=false,'https://www.');

我们在 aardio 中调用了 Python 里的 requests.get 函数,写法几乎与 Python 的语法糖一模一样,再回去看看 Python 调用该函数的代码:

requests.get('https://www.',verify=False)

唯一的区别是在 aardio 中需要把命名参数写到最前面。这样我们就把从一个编程语言换到另一个编程语言所有消耗的心智成本降到了最低( 当然我们不总是能做到百分百相同的语法 )

好吧,今天就先到这里,大家如果对 Python 感兴趣,aardio 给大家推荐了一个很适合零基础快速掌握 Python 的入门教程( 其实你学会了 Python ,自然也就会用 aardio 了):

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多