python中為什么exec執(zhí)行break語句會(huì)失敗

這篇文章主要介紹了python中為什么exec執(zhí)行break語句會(huì)失敗,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)陵水黎族,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

如果我們想要執(zhí)行代碼,有兩種函數(shù)可以選擇,但如果是復(fù)雜的語句塊就需要選擇exec函數(shù)。這里有小伙伴在使用exec函數(shù)執(zhí)行break語句時(shí)出現(xiàn)了錯(cuò)誤,在此我們先不說原因。有些小伙伴對(duì)于exec函數(shù)的基礎(chǔ)內(nèi)容還不夠了解,這里我們先講講exec語法、作用、參數(shù),再通過實(shí)例為大家分析break執(zhí)行出錯(cuò)的原因。

1.語法

exec(expression, globals=None, locals=None, /)

2.作用

動(dòng)態(tài)執(zhí)行Python代碼。也就是說exec可以執(zhí)行復(fù)雜的Python代碼,而不像eval函數(shù)那么樣只能計(jì)算一個(gè)表達(dá)式的值。

3.參數(shù)

object:必選參數(shù),表示需要被指定的Python代碼。它必須是字符串或code對(duì)象。如果object是一個(gè)字符串,該字符串會(huì)先被解析為一組Python語句,然后在執(zhí)行(除非發(fā)生語法錯(cuò)誤)。如果object是一個(gè)code對(duì)象,那么它只是被簡單的執(zhí)行。

globals:可選參數(shù),同eval函數(shù)

locals:可選參數(shù),同eval函數(shù)

4.實(shí)例

>>> i = 5
>>> j = 7
>>> n = 0
>>> while n < i:
... print("looping")
... exec("""if j > 5:
... \n break""")
... n += 1
...
looping
Traceback (most recent call last):
File "", line 4, in
File "", line 3
SyntaxError: "break" outside loop

在這里,exec函數(shù)為什么失效了呢?

根據(jù)Python文檔,解釋器會(huì)在執(zhí)行到break語句時(shí),會(huì)跳出離該句最近的while、for循環(huán),如果解釋器無法找到while、for循環(huán),就會(huì)報(bào)錯(cuò)。因此,此處報(bào)錯(cuò),說明了Python解釋器沒有找到exec之前的while循環(huán)。

實(shí)際上,仔細(xì)看文檔會(huì)發(fā)現(xiàn),解釋器遇到exec函數(shù)時(shí),會(huì)獨(dú)立執(zhí)行字符串內(nèi)的語句。如果還有傳參,那都是定義變量的字典。解釋器,不會(huì)尋找字符串外的語法結(jié)構(gòu)。也就是說,在這個(gè)例子中,解釋器會(huì)獨(dú)立執(zhí)行語句。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享python中為什么exec執(zhí)行break語句會(huì)失敗內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!

文章標(biāo)題:python中為什么exec執(zhí)行break語句會(huì)失敗
URL鏈接:http://bm7419.com/article8/jddoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、App設(shè)計(jì)、定制網(wǎng)站、做網(wǎng)站靜態(tài)網(wǎng)站、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)