• <menu id="w2i4a"></menu>
  • logo PyCharm入門教程

    文檔首頁>>PyCharm入門教程>>PyCharm入門第一步(二)——調(diào)試第一個(gè)Python應(yīng)用程序

    PyCharm入門第一步(二)——調(diào)試第一個(gè)Python應(yīng)用程序


    PyCharm v2019.1全新發(fā)布

    第2步:調(diào)試您的第一個(gè)Python應(yīng)用程序

    找出問題的根源

    PyCharm報(bào)告運(yùn)行時(shí)錯(cuò)誤:a ZeroDivisionError。深入研究一下代碼,找出問題所在。這里可以使用PyCharm調(diào)試器來查看代碼中發(fā)生了什么。要開始調(diào)試,您必須先設(shè)置一些斷點(diǎn)。要?jiǎng)?chuàng)建斷點(diǎn),只需單擊左側(cè)gutter:

    接下來,單擊左側(cè)gutter中的播放圖標(biāo),在main旁邊,然后選擇Debug 'Car'。 PyCharm啟動(dòng)調(diào)試會(huì)話并顯示調(diào)試工具窗口。

    在Console選項(xiàng)中,輸入S:

    如您所見,斷點(diǎn)標(biāo)記變?yōu)樗{(lán)色。這意味著已經(jīng)達(dá)到了斷點(diǎn); 請(qǐng)注意,此時(shí)尚未執(zhí)行突出顯示的代碼行。

    單擊播放圖標(biāo)以恢復(fù)腳本執(zhí)行?,F(xiàn)在另一個(gè)斷點(diǎn)也出現(xiàn)了:默認(rèn)情況下,PyCharm將停止代碼中未捕獲的任何異常,并且它將顯示帶閃電的斷點(diǎn)圖標(biāo)。

    控制臺(tái)還會(huì)顯示錯(cuò)誤消息。您還可以在調(diào)試器中看到該值self.time等于零:

    Surrounding code

    為避免再次遇到同樣的問題,現(xiàn)在添加一個(gè)if語句來檢查時(shí)間是否等于零。為此,在方法average_speed中選擇語句return self.odometer / self.time,然后按Ctrl + Alt + T(Code | Surround with):

    PyCharm創(chuàng)建一個(gè)stub if構(gòu)造,讓你完成填充正確內(nèi)容的任務(wù)。編輯后,得到以下內(nèi)容:

    詳細(xì)調(diào)試

    “調(diào)試”工具窗口顯示框架, 變量和監(jiān)視的專用窗格以及控制臺(tái),其中顯示所有輸入和輸出信息。如果希望控制臺(tái)始終可見,可以將其拖動(dòng)到PyCharm窗口的一個(gè)邊緣。

    Stepping

    如果您希望逐行查看代碼的作用,則無需在每一行上設(shè)置斷點(diǎn),您可以單步執(zhí)行代碼。看一下示例程序是什么樣子:單擊播放圖標(biāo),轉(zhuǎn)到控制臺(tái)詢問汽車的平均速度(類型'S'),可以看到達(dá)到斷點(diǎn)。這時(shí)可以使用Stepping工具欄按鈕選擇想要在下一行停止的行。

    例如,單擊Step Over 按鈕并看到藍(lán)色標(biāo)記移動(dòng)到下一行代碼:

    如果單擊Step Into按鈕,您將看到action = input("What should I do? [A]ccelerate, [B]rake, " "show [O]dometer, or show average [S]peed?").upper() 調(diào)試器進(jìn)入文件parse.py:

    但是,如果繼續(xù)使用Step Over 按鈕,您將看到您的應(yīng)用程序只是傳遞到下一個(gè)循環(huán):

    如果您想專注于自己的代碼,請(qǐng)使用Step Into My Code按鈕 - 這樣您就可以避免進(jìn)入庫類。

    Watching

    PyCharm允許您觀察任何變量。只需要單擊Watches選項(xiàng)的工具欄中的+,然后輸入你想要觀看的變量的名稱-將其設(shè)置為 my_car.time。請(qǐng)注意,此處可以使用代碼完成:

    首先,您看到時(shí)間等于nil - 這意味著該變量尚未定義:

    但是,當(dāng)程序執(zhí)行繼續(xù)到定義變量的作用域時(shí),監(jiān)視器將獲得以下視圖:

    內(nèi)聯(lián)調(diào)試

    您可能已經(jīng)注意到另一個(gè)PyCharm功能,可以輕松查看代碼正在執(zhí)行的操作: 內(nèi)聯(lián)調(diào)試器。一旦你遇到任何斷點(diǎn),PyCharm就會(huì)在編輯器中向你顯示許多變量的值:

    默認(rèn)情況下啟用此內(nèi)聯(lián)調(diào)試功能。如果您沒有看到內(nèi)聯(lián)調(diào)試值,請(qǐng)使用調(diào)試工具窗口中的設(shè)置圖標(biāo)檢查它是否已啟用::

    評(píng)估表達(dá)式

    最后,您可以隨時(shí)評(píng)估任何表達(dá)式。

    實(shí)際上,你可以用watch看到同樣的東西。使用評(píng)估表達(dá)式,您可以執(zhí)行使用watch無法執(zhí)行的操作:您可以更改內(nèi)容。例如,如果輸入所需的里程表值50,然后繼續(xù)單步執(zhí)行腳本,您將獲得以下信息:

    概要

    • 找出問題的根源
    • 設(shè)置斷點(diǎn)
    • 逐步完成您的計(jì)劃
    • 創(chuàng)建一個(gè) watch
    • 評(píng)估一個(gè)表達(dá)
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();