aardio 雖然小,但很適合借力打力,別的編程語(yǔ)言再?gòu)?qiáng)再好也可以為我所用,僅僅是能調(diào)用當(dāng)然是不夠的,我們還需要極簡(jiǎn)潔、極方便、極舒適才能借力打力得痛快。
不同編程語(yǔ)言總是有這樣那樣的區(qū)別,要跨越不同編程語(yǔ)言的障礙 —— 使之變得極簡(jiǎn)潔、極方便、極舒適并非那么容易。舉個(gè)小例子, Python 函數(shù)可以在調(diào)用時(shí)指定命名參數(shù),如下:
req = requests.get('https://www.aardio.com',verify=False)
當(dāng)在 aardio 中調(diào)用 Python 函數(shù)時(shí)我們要如何指定這些參數(shù)呢?!實(shí)際上 aardio 并不支持命名參數(shù)這種語(yǔ)法,當(dāng)然我們可以用一個(gè)表來(lái)代替命名參數(shù),但問(wèn)題是:有時(shí)候我們不需要命名參數(shù),命名參數(shù)是可選的,我們不能認(rèn)為傳入一個(gè)表就一定是命名參數(shù)。
因?yàn)檎{(diào)用 Python 函數(shù)時(shí)傳入表參數(shù)不一定就是用于命名參數(shù),所以在 Python 擴(kuò)展庫(kù)里為 Python 函數(shù)對(duì)象添加了一個(gè)新的 invoke 方法,這個(gè)函數(shù)的用法如下:
var result = pyObject.inovke( kwargs,arg1,args2, ...)
如果 kwargs 是一個(gè)純表( 沒(méi)有指定元表 )則將其視為命名參數(shù),否則視為普通匿名參數(shù)。我已經(jīng)更新了 py,py2,py3 等擴(kuò)展庫(kù)( Python 的版本太多,而且相互不兼容,這真是令人悲哀的一件事 )添加了上述的 invoke 函數(shù)。
然后就發(fā)生了有趣的事情,aardio 調(diào)用函數(shù)的第一個(gè)參數(shù)如果是表對(duì)象,就可以省略外層的 { } ,而且表中的分隔符也可以替換為逗號(hào),于是在新版本中我們可以寫(xiě)出下面的 aardio 代碼:
import console;
import py3;
var requests = py3.import('requests');
//支持省略命名參發(fā),例如 requests.get.invoke('http://www.example.com');
var res = requests.get.invoke(
verify=false,'https://www.aardio.com'
);
console.log( res.text );
console.pause()
注意上面這句關(guān)鍵的 aardio 代碼:
requests.get.invoke(
verify=false,'https://www.aardio.com'
);
我們?cè)?aardio 中調(diào)用了 Python 里的 requests.get 函數(shù),寫(xiě)法幾乎與 Python 的語(yǔ)法糖一模一樣,再回去看看 Python 調(diào)用該函數(shù)的代碼:
requests.get('https://www.aardio.com',verify=False)
唯一的區(qū)別是在 aardio 中需要把命名參數(shù)寫(xiě)到最前面。這樣我們就把從一個(gè)編程語(yǔ)言換到另一個(gè)編程語(yǔ)言所有消耗的心智成本降到了最低( 當(dāng)然我們不總是能做到百分百相同的語(yǔ)法 )
好吧,今天就先到這里,大家如果對(duì) Python 感興趣,aardio 給大家推薦了一個(gè)很適合零基礎(chǔ)快速掌握 Python 的入門(mén)教程( 其實(shí)你學(xué)會(huì)了 Python ,自然也就會(huì)用 aardio 了):
聯(lián)系客服