*?Pyke?知識(shí)庫(kù)是一維結(jié)構(gòu)墅拭,知識(shí)庫(kù)中只有事實(shí)陳述語(yǔ)句,不允許包含其他知識(shí)庫(kù)涣狗。同時(shí)谍婉,事實(shí)陳述語(yǔ)句也是一維結(jié)構(gòu),句中不能包含其他語(yǔ)句镀钓。
*?語(yǔ)句::= 標(biāo)識(shí).標(biāo)識(shí)(參數(shù),參數(shù),……)
*?參數(shù)可以是 Python 簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)(數(shù)字穗熬,字符串,None丁溅,True 或 False)唤蔗,或者由它們組成的元組(包括嵌套的元組)。
文字模式:匹配對(duì)象是一模一樣的值窟赏,即其自身妓柜。?
模式變量:匹配的可以是任何對(duì)象(包括其他模式變量)。?
還有一種復(fù)合模式:?
元組模式:匹配對(duì)象是元組涯穷。
若想陳述某個(gè)事實(shí)棍掐,直接把數(shù)據(jù)寫(xiě)成參數(shù)就行。?
但若要通過(guò)提問(wèn)等方式求豫,推斷某個(gè)結(jié)論塌衰,需要以模式作為參數(shù)诉稍。
模式變量用做輸出變量蝠嘉。形式上以美元符號(hào) $ 開(kāi)頭。
匿名變量的名字杯巨,開(kāi)頭字符是下劃線(_)蚤告,其余字符無(wú)關(guān)緊要,頂多有點(diǎn)文檔助記的作用服爷。不過(guò)符號(hào) $ 必不可少杜恰。匿名變量获诈,從不約束值⌒暮郑或者說(shuō)舔涎,從不賦值給它,它總是自由的逗爹。
模式變量是如何與數(shù)據(jù)值匹配合一的亡嫌。?
首先,檢驗(yàn)?zāi)J阶兞渴欠褚呀?jīng)約束了值掘而。?
若已經(jīng)約束了值挟冠,則把它與數(shù)據(jù)的值比對(duì),若一致袍睡,則匹配成功知染。?
若尚未約束值,則把數(shù)據(jù)的值與其匹配合一斑胜,這種匹配總會(huì)成功控淡。?
模式變量在未受約束 時(shí),可與任何值合一匹配伪窖。匹配后逸寓,變量約束了那個(gè)值。這也是匹配的副作用覆山。模式變量在約束了值以后竹伸,只能與完全相同的值匹配,很像個(gè)文字模式簇宽。
元組模式只與元組合一匹配勋篓。它形式上是在圓括號(hào)中,成員由逗號(hào)隔開(kāi)的模式列表魏割,元組的最后那個(gè)變量譬嚣,用星號(hào)(*)修飾成“其余模式”。這個(gè)“其余模式”的變量钞它,總是約束為元組拜银。
若模式變量A約束成B,即A變成了B遭垛,則它們實(shí)際上成為相同的模式變量尼桶。 模式變量A約束成B之后,B依舊是自由的锯仪、未受約束的泵督。