您好,登錄后才能下訂單哦!
這篇文章主要介紹了python中為什么exec執行break語句會失敗,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
如果我們想要執行代碼,有兩種函數可以選擇,但如果是復雜的語句塊就需要選擇exec函數。這里有小伙伴在使用exec函數執行break語句時出現了錯誤,在此我們先不說原因。有些小伙伴對于exec函數的基礎內容還不夠了解,這里我們先講講exec語法、作用、參數,再通過實例為大家分析break執行出錯的原因。
1.語法
exec(expression, globals=None, locals=None, /)
2.作用
動態執行Python代碼。也就是說exec可以執行復雜的Python代碼,而不像eval函數那么樣只能計算一個表達式的值。
3.參數
object:必選參數,表示需要被指定的Python代碼。它必須是字符串或code對象。如果object是一個字符串,該字符串會先被解析為一組Python語句,然后在執行(除非發生語法錯誤)。如果object是一個code對象,那么它只是被簡單的執行。
globals:可選參數,同eval函數
locals:可選參數,同eval函數
4.實例
>>> 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函數為什么失效了呢?
根據Python文檔,解釋器會在執行到break語句時,會跳出離該句最近的while、for循環,如果解釋器無法找到while、for循環,就會報錯。因此,此處報錯,說明了Python解釋器沒有找到exec之前的while循環。
實際上,仔細看文檔會發現,解釋器遇到exec函數時,會獨立執行字符串內的語句。如果還有傳參,那都是定義變量的字典。解釋器,不會尋找字符串外的語法結構。也就是說,在這個例子中,解釋器會獨立執行語句。
感謝你能夠認真閱讀完這篇文章,希望小編分享python中為什么exec執行break語句會失敗內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。