原題|Left-recursivePEGgrammars作者|GuidovanRossum(Python之父)譯者|豌豆花下貓(“Python貓”公眾號作者)聲明|本翻譯是出于交流學習的目的,基于CCBY-NC-SA4.0授權協議。為便于閱讀,內容略有改動。我曾幾次提及左遞歸是一塊絆腳石,是時候去解決它了。基本的問題在于:使用遞歸下降解析器時,左遞歸會因堆棧溢出而導致程序終止。【這是我的PEG系列的第5部分。其它文章參見這個目錄】假設有如下的語法規則:ex
系統 2019-09-27 17:49:40 1709
作業一:需求:寫函數,計算傳入字符串中的【數字】、【字母】、【空格】以及【其他】的個數1#!/usr/bin/envpython2#-*-coding:utf-8-*-34#先定義一個函數5deffunc(args):6#定義一個計算數字的變量7digit_num=08#定義一個計算字母的變量9al_num=010#定義一個計算空格的變量11spance_num=012#定義一個計算其他的變量13other_num=01415foriinargs:16if
系統 2019-09-27 17:49:36 1709
python的新式類是2.2版本引進來的,我們可以將之前的類叫做經典類或者舊式類。為什么要在2.2中引進newstyleclass呢?官方給的解釋是:為了統一類(class)和類型(type)。在2.2之前,比如2.1版本中,類和類型是不同的,如a是ClassA的一個實例,那么a.__class__返回‘class__main__.ClassA‘,type(a)返回總是。而引入新類后,比如ClassB是個新類,b是ClassB的實例,b.__class__
系統 2019-09-27 17:49:33 1709
Python是我喜歡的語言,簡潔,優美,容易使用。前兩天,我很激昂的向朋友宣傳Python的好處。聽過之后,朋友問我:好吧,我承認Python不錯,但它為什么叫Python呢?我不是很確定:呃,似乎是一個電視劇的名字。朋友又問:那你說的Guido是美國人么?(GuidovonRossum,Python的作者)我再次不是很確定:他從google換到Dropbox工作,但他的名字像是荷蘭人的(有一個von在中間)。所以,后面我花了些時間調查Python的歷史。
系統 2019-09-27 17:49:24 1709
ccs的優點:css相對xpath語法比xpath簡潔,定位速度比xpath快css的缺點:css不支持用邏輯運算符來定位,而xpath支持。css定位語法形式多樣,相對xpath比較難記。css定位建議多用,這個定位方式很強大,定位速度快且準確度高。至于難記,用熟了就好了,對勤快的人來說,這不是問題。CSS_selector常用符號:#表示id.表示class>表示子元素,層級1.通過id屬性定位:find_element_by_css_selector
系統 2019-09-27 17:49:19 1709
單例模式單例模式(SingletonPattern)是一種常用的軟件設計模式,該模式的主要目的是確保某一個類只有一個實例存在。當你希望在整個系統中,某個類只能出現一個實例時,單例對象就能派上用場。比如,某個服務器程序的配置信息存放在一個文件中,客戶端通過一個AppConfig的類來讀取配置文件的信息。如果在程序運行期間,有很多地方都需要使用配置文件的內容,也就是說,很多地方都需要創建AppConfig對象的實例,這就導致系統中存在多個AppConfig的實
系統 2019-09-27 17:49:13 1709
PIL圖片操作讀取圖片img=Image.open(“a.jpg”)顯示圖片im.show()#im是Image對象,im是numpy類型,通過Image.fromarray(nparr,mode='RGB')函數轉換為Image對象圖片的size(width,height)=img.size圖片的模式mode=img.mode截區域img_c=img.crop(x1,y1,x2,y2)裁剪圖片img=img.resize((size,size),Imag
系統 2019-09-27 17:48:58 1709
前面介紹過vSQLAlchemy中的Engine和Connection,這兩個對象用在rowSQL(原生的sql語句)上操作,而ORM(ObjectRelationalMapper)則是一種用面向對象的思維來操作表數據的技術。所謂ORM就是Python對象到數據表的一種映射關系。以前SQLAlchemy是怎么把Python對象和數據庫中表里面的每條記錄進行映射的呢?通過一個mapping函數先來看個例子:fromsqlalchemyimportTable,
系統 2019-09-27 17:48:55 1709
一、運算符1、算術運算符:主要用于兩個對象算數計算(加減乘除等運算)運算符:+:兩個對象相加-:得到負數或是一個數減去另一個數*:兩個數相乘或是返回一個被重復若干次的字符串/:x除以y%:返回除法的余數**:返回x的y次冪//:返回商的整數部分2、比較(關系)運算符:用于兩個對象比較(判斷是否相等、大于等運算)運算符:==:比較對象是否相等!=:比較兩個對象是否不相等<>:比較兩個對象是否不相等>:返回x是否大于y<:返回x是否小于y。所有比較運算符返回1
系統 2019-09-27 17:48:50 1709
最近在做cocos2d-x的簡明配置,發現有的朋友的文本編輯器,自動將\r\n截斷成\n,(在unix上換行使用\n,windows上,換行使用的是\r\n)于是,寫了這個腳本,希望對一些朋友有所幫助,不用一行一行去改importosdefreplace(filePath,w2u):try:oldfile=open(filePath,"rb+")#這里必須用b打開path,name=os.path.split(filePath)newfile=open(p
系統 2019-09-27 17:48:49 1709