在工作中遇到一個(gè)項(xiàng)目的陳年老bug,如圖:
成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
bug原因是這里本應(yīng)該傳idx,結(jié)果傳成了id。
但是這里最有意思的地方來(lái)了。
從截圖可以看出,這個(gè)id并不是入?yún)ⅲ矝](méi)有定義過(guò),那他直接用怎么不會(huì)報(bào)參數(shù)未定義的語(yǔ)法錯(cuò)誤呢?按說(shuō)函數(shù)應(yīng)該執(zhí)行不了直接報(bào)錯(cuò),但是實(shí)際上整個(gè)方法可以執(zhí)行不會(huì)報(bào)錯(cuò)。
排查import也沒(méi)有import id,也沒(méi)有定義全局變量。那么這個(gè)id變量沒(méi)有在任何地方定義,為什么可以直接使用呢,還不會(huì)報(bào)語(yǔ)法錯(cuò)誤?
經(jīng)過(guò)查閱資料才發(fā)現(xiàn),id在這里其實(shí) 不是一個(gè)變量,而是一個(gè)函數(shù)!
查看官方文檔可以看到:
所以id()本身是python內(nèi)置的一個(gè)函數(shù),但是因?yàn)楹苌儆玫剑院芏嗳瞬⒉惶宄?/p>
python實(shí)現(xiàn)index()功能:
語(yǔ)法
index()方法語(yǔ)法:
str.index(str, beg=0, end=len(string))
參數(shù)
str -- 指定檢索的字符串
beg -- 開(kāi)始索引,默認(rèn)為0。
end -- 結(jié)束索引,默認(rèn)為字符串的長(zhǎng)度。
返回值
如果包含子字符串返回開(kāi)始的索引值,否則拋出異常。
實(shí)例
以下實(shí)例展示了index()方法的實(shí)例:
#!/usr/bin/python
str1 = "this is string example....wow!!!";
str2 = "exam";
print str1.index(str2);
print str1.index(str2, 10);
print str1.index(str2, 40);
以上實(shí)例輸出結(jié)果如下:
15
15
Traceback (most recent call last):
File "test.py", line 8, in
print str1.index(str2, 40);
ValueError: substring not found
shell returned 1
enumerate(x,y)函數(shù)是把元組tuple、字符串str、列表list里面的元素遍歷和索引組合,其用法與range()函數(shù)很相似,
下面示例enumerate(x,y)用法以及range(x)相似的用法,但是,enumerate(x,y)函數(shù)在遍歷excel等時(shí),可以實(shí)現(xiàn)與人視覺(jué)了解到的認(rèn)識(shí)更好的理解。
enumerate(x,y)中參數(shù)y可以省略,省略時(shí),默認(rèn)從0開(kāi)始,
如示例一:
list_words=["this","is","blog","of","white","mouse"]
for idx,word in enumerate(list_words):
print(idx,word)
打印結(jié)果:
使用range()函數(shù)遍歷實(shí)現(xiàn):
list_words=["this","is","blog","of","white","mouse"]
for? i in range(len(list_words)):
print(i,list_words[i])
打印結(jié)果:
自定義開(kāi)始索引號(hào):
示例二:
list_words=["this","is","blog","of","white","mouse"]
for idx,word in enumerate(list_words[1:],2):#也可以寫(xiě)成for idx,word in enumerate(list_words,start=2):
print(idx,word)
打印結(jié)果:
從上面示例中可以看出,enumerate(x,y)中x是需要遍歷的元組tuple、字符串str、列表list,可以和切片組合使用,
y是自定義開(kāi)始的索引號(hào),根據(jù)自己的需要設(shè)置開(kāi)始索引號(hào)。
文章名稱:包含pythonidx函數(shù)的詞條
轉(zhuǎn)載源于:http://vcdvsql.cn/article40/dosdieo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)公司、動(dòng)態(tài)網(wǎng)站、外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)