Python replace()方法把字符串中的old(舊字符串)替換成new(新字符串),如果指定三個(gè)參數(shù)max,則替換不超過max次。
目前成都創(chuàng)新互聯(lián)已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、靜海網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
語法
replace()方法語法:
str.replace(old, new[, max])
參數(shù)
old -- 將被替換的子字符串;
new -- 新字符串,用于替換old子字符串;
max -- 可選字符串,替換不超過max次。
返回值
返回字符串中的old(舊字符串)替換成new(新字符串)后生成的新字符串,如果指定第三個(gè)參數(shù)max,則替換不超過max次。
實(shí)例
#!/usr/bin/python
str = "this is string example....wow!!! this is really string";
print str.replace("is", "was");
print str.replace("is", "was", 3);
輸出結(jié)果
thwas was string example....wow!!! thwas was really string
thwas was string example....wow!!! thwas is really string
python可以使用replace方法替換指定字符,根據(jù)關(guān)鍵字替換字符串內(nèi)的所有內(nèi)容。也可以自定義方法,用循環(huán)進(jìn)行遍歷處理
使用pycharm然后直接使用F12就可以直接轉(zhuǎn)到函數(shù)定位位置
也可以使用Structure查看函數(shù),直接就可以定位到函數(shù)位置
這篇文章主要介紹了Python函數(shù)式編程指南(一):函數(shù)式編程概述,本文講解了什么是函數(shù)式編程概述、什么是函數(shù)式編程、為什么使用函數(shù)式編程、如何辨認(rèn)函數(shù)式風(fēng)格等核心知識(shí),需要的朋友可以參考下1pareTo(o2))相信從這個(gè)小小的例子你也能感受到強(qiáng)大的生產(chǎn)效率:)封裝控制結(jié)構(gòu)的內(nèi)置模板函數(shù)為了避開邊界效應(yīng),函數(shù)式風(fēng)格盡量避免使用變量,而僅僅為了控制流程而定義的循環(huán)變量和流程中產(chǎn)生的臨時(shí)變量無疑是最需要避免的。假如我們需要對(duì)剛才的數(shù)集進(jìn)行過濾得到所有的正數(shù),使用指令式風(fēng)格的代碼應(yīng)該像是這樣:代碼如下:lst2 = list()for i in range(len(lst)): #模擬經(jīng)典for循環(huán)if lst[i] 0:lst2.append(lst[i])這段代碼把從創(chuàng)建新列表、循環(huán)、取出元素、判斷、添加至新列表的整個(gè)流程完整的展示了出來,儼然把解釋器當(dāng)成了需要手把手指導(dǎo)的傻瓜。然而,“過濾”這個(gè)動(dòng)作是很常見的,為什么解釋器不能掌握過濾的流程,而我們只需要告訴它過濾規(guī)則呢?在Python里,過濾由一個(gè)名為filter的內(nèi)置函數(shù)實(shí)現(xiàn)。有了這個(gè)函數(shù),解釋器就學(xué)會(huì)了如何“過濾”,而我們只需要把規(guī)則告訴它:代碼如下:lst2 = filter(lambda n: n 0, lst)這個(gè)函數(shù)帶來的好處不僅僅是少寫了幾行代碼這么簡(jiǎn)單。封裝控制結(jié)構(gòu)后,代碼中就只需要描述功能而不是做法,這樣的代碼更清晰,更可讀。因?yàn)楸荛_了控制結(jié)構(gòu)的干擾,第二段代碼顯然能讓你更容易了解它的意圖。另外,因?yàn)楸荛_了索引,使得代碼中不太可能觸發(fā)下標(biāo)越界這種異常,除非你手動(dòng)制造一個(gè)。函數(shù)式編程語言通常封裝了數(shù)個(gè)類似“過濾”這樣的常見動(dòng)作作為模板函數(shù)。唯一的缺點(diǎn)是這些函數(shù)需要少量的學(xué)習(xí)成本,但這絕對(duì)不能掩蓋使用它們帶來的好處。閉包(closure)閉包是綁定了外部作用域的變量(但不是全局變量)的函數(shù)。大部分情況下外部作用域指的是外部函數(shù)。閉包包含了自身函數(shù)體和所需外部函數(shù)中的“變量名的引用”。引用變量名意味著綁定的是變量名,而不是變量實(shí)際指向的對(duì)象;如果給變量重新賦值,閉包中能訪問到的將是新的值。閉包使函數(shù)更加靈活和強(qiáng)大。即使程序運(yùn)行至離開外部函數(shù),如果閉包仍然可見,則被綁定的變量仍然有效;每次運(yùn)行至外部函數(shù),都會(huì)重新創(chuàng)建閉包,綁定的變量是不同的,不需要擔(dān)心在舊的閉包中綁定的變量會(huì)被新的值覆蓋?;氐絼偛胚^濾數(shù)集的例子。假設(shè)過濾條件中的 0 這個(gè)邊界值不再是固定的,而是由用戶控制。如果沒有閉包,那么代碼必須修改為:代碼如下:class greater_than_helper:def __init__(self, minval):self.minval = minvaldef is_greater_than(self, val):return val self.minvaldef my_filter(lst, minval):helper = greater_than_helper(minval)return filter(helper.is_greater_than, lst)請(qǐng)注意我們現(xiàn)在已經(jīng)為過濾功能編寫了一個(gè)函數(shù)my_filter。如你所見,我們需要在別的地方(此例中是類greater_than_helper)持有另一個(gè)操作數(shù)minval。如果支持閉包,因?yàn)殚]包可以直接使用外部作用域的變量,我們就不再需要greater_than_helper了:代碼如下:def my_filter(lst, minval):return filter(lambda n: n minval, lst)可見,閉包在不影響可讀性的同時(shí)也省下了不少代碼量。函數(shù)式編程語言都提供了對(duì)閉包的不同程度的支持。在Python 2.x中,閉包無法修改綁定變量的值,所有修改綁定變量的行為都被看成新建了一個(gè)同名的局部變量并將綁定變量隱藏。Python 3.x中新加入了一個(gè)關(guān)鍵字 nonlocal 以支持修改綁定變量。但不管支持程度如何,你始終可以訪問(讀取)綁定變量。內(nèi)置的不可變數(shù)據(jù)結(jié)構(gòu)為了避開邊界效應(yīng),不可變的數(shù)據(jù)結(jié)構(gòu)是函數(shù)式編程中不可或缺的部分。不可變的數(shù)據(jù)結(jié)構(gòu)保證數(shù)據(jù)的一致性,極大地降低了排查問題的難度。例如,Python中的元組(tuple)就是不可變的,所有對(duì)元組的操作都不能改變?cè)M的內(nèi)容,所有試圖修改元組內(nèi)容的操作都會(huì)產(chǎn)生一個(gè)異常。函數(shù)式編程語言一般會(huì)提供數(shù)據(jù)結(jié)構(gòu)的兩種版本(可變和不可變),并推薦使用不可變的版本。遞歸遞歸是另一種取代循環(huán)的方法。遞歸其實(shí)是函數(shù)式編程很常見的形式,經(jīng)常可以在一些算法中見到。但之所以放到最后,是因?yàn)閷?shí)際上我們一般很少用到遞歸。如果一個(gè)遞歸無法被編譯器或解釋器優(yōu)化,很容易就會(huì)產(chǎn)生棧溢出;另一方面復(fù)雜的遞歸往往讓人感覺迷惑,不如循環(huán)清晰,所以眾多最佳實(shí)踐均指出使用循環(huán)而非遞歸。這一系列短文中都不會(huì)關(guān)注遞歸的使用。第一節(jié)完
python交換兩個(gè)變量的值很簡(jiǎn)單,a,b = b,a 就可以,寫成函數(shù),代碼如下:
def?jh(a,b):
return?b,a
x?=?1
y?=?2
x,y?=?jh(x,y)
print(x,y)
執(zhí)行結(jié)果如下: