你是不是也曾在寫(xiě)代碼時(shí),遇到過(guò)“明明邏輯沒(méi)錯(cuò),卻跳過(guò)了不該跳過(guò)的步驟”這種尷尬時(shí)刻?今天我們就來(lái)聊聊一個(gè)看似簡(jiǎn)單、實(shí)則藏著不少細(xì)節(jié)的關(guān)鍵詞——continue。
Q:什么是 continue?它和 break 有什么區(qū)別?
在循環(huán)結(jié)構(gòu)中(比如 for 或 while),continue 的作用是:跳過(guò)當(dāng)前這一次循環(huán)體中的剩余代碼,直接進(jìn)入下一輪循環(huán)。而 break 是直接退出整個(gè)循環(huán)。
舉個(gè)真實(shí)案例:假設(shè)你在寫(xiě)一個(gè)爬蟲(chóng)腳本,要從一堆網(wǎng)頁(yè)鏈接中篩選出有效鏈接。但有些鏈接格式錯(cuò)誤,你不想處理它們,只想跳過(guò):
for url in urls: if not url.startswith("http"): continue 跳過(guò)無(wú)效鏈接 print(f"正在處理: {url}") 這里執(zhí)行真正的爬取邏輯...這時(shí)候,如果遇到 `ftp://example.com`,程序不會(huì)報(bào)錯(cuò),也不會(huì)繼續(xù)往下執(zhí)行爬取操作,而是直接跳到下一輪循環(huán)——這就是 continue 的溫柔之處。
Q:那我能不能在嵌套循環(huán)里用?會(huì)不會(huì)影響外層?
當(dāng)然可以!但要小心——continue 只會(huì)影響它所在的最內(nèi)層循環(huán)。
比如:
for i in range(3): for j in range(3): if j == 1: continue print(f"i={i}, j={j}")輸出結(jié)果是:
i=0, j=0
i=0, j=2
i=1, j=0
i=1, j=2
……
你會(huì)發(fā)現(xiàn),當(dāng) j=1 時(shí),只跳過(guò)了這一輪內(nèi)層循環(huán),外層 i 依然正常迭代。
Q:有沒(méi)有什么坑?新手容易踩?
有!最常見(jiàn)的坑是:誤以為 continue 會(huì)“跳過(guò)整個(gè)條件塊”,其實(shí)它只是跳過(guò)當(dāng)前循環(huán)的剩余語(yǔ)句。
比如這段代碼:
for num in [1, 2, 3, 4]: if num % 2 == 0: continue print(num) 這行會(huì)被跳過(guò)! print("這是奇數(shù)")你會(huì)看到只有 1 和 3 被打印出來(lái),因?yàn)榕紨?shù)時(shí),continue 直接跳過(guò)了后面兩行代碼,根本沒(méi)機(jī)會(huì)執(zhí)行打印邏輯。
??小建議:寫(xiě)完帶 continue 的循環(huán),一定要手動(dòng)模擬幾輪,確認(rèn)是否真的跳得準(zhǔn)、跳得對(duì)。
總結(jié)一下:continue 不是萬(wàn)能鑰匙,但它是個(gè)優(yōu)雅的“過(guò)濾器”——幫你把不需要處理的分支快速篩掉,讓主流程更清晰。學(xué)會(huì)用它,你的代碼會(huì)像咖啡一樣順滑~
下次寫(xiě)循環(huán)時(shí),不妨試試給它加個(gè) continue,說(shuō)不定就是你代碼里的那個(gè)“隱藏彩蛋”?

