最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用spyder3調(diào)試python程序的實現(xiàn)步驟

 更新時間:2021年12月21日 10:45:48   作者:燃燒杯  
本文主要介紹了使用spyder3調(diào)試python程序的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

說是簡明教程,其實是我自己嘗試用spyder調(diào)試python程序的過程的一個記錄,因為spyder的調(diào)試功能是基于pdb,而我又沒有pdb的基礎,所以剛開始上手時感覺很不習慣,而且那時我又很懶,沒去找官方文檔,僅僅在百度和csdn上找了找,沒找到比較好的資料,于是放棄了,過了一段時間之后,突然又心血來潮,去找了官方文檔,外加自己的一些嘗試,總算入門了spyder的調(diào)試功能,特地記錄下來與大家共享,我使用的spyder版本是3.1.4(使用pip list命令查看spyder版本)

Spyder官方文檔地址

http://pythonhosted.org/spyder/

開始調(diào)試

先寫一個簡單的小程序用于調(diào)試:

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 28 23:59:40 2017

@author: 燃燒杯
"""

a = 'a'
b = 'b'
c = 'c'
e = 'e'
f = 'f'
g = 'g'
h = 'h'
print(a)

我們暫時先不打斷點,用debug的方式運行該代碼試試

debug

點擊spyder工具欄上的Debug file按鈕,或者使用快捷鍵Ctrl+F5開始調(diào)試。

在ipython界面會輸出如圖所示的內(nèi)容:

first debug

出現(xiàn)了ipdb提示符,說明我們已經(jīng)進入了調(diào)試模式,上面輸出的內(nèi)容可以看出是代碼的第一行,接著在提示符中輸入c(continue的縮寫,表示程序繼續(xù)向下執(zhí)行到下一個斷點),會輸出如下內(nèi)容:

first_debug_end

程序執(zhí)行結束,可見即使我們沒有打斷點,仍然會在第一句執(zhí)行之前中斷(經(jīng)測試,中斷的時候第一句還沒有執(zhí)行),這個和我用過的其他編譯器不太一樣(比如eclipse和IntelliJ,在不打斷點的情況下會正常執(zhí)行到底),一開始還讓我困惑了一下,后來就適應了.
如果你仔細看剛才的工具欄截圖的話,會發(fā)現(xiàn)在debug按鈕組的第五個按鈕和剛剛的c命令是一樣的功能,但是不知道為什么,在我這個版本的spyder里有這個按鈕一些bug(具體來說就是在程序執(zhí)行結束之后不會自動退出pdb,而且之后再想使用q命令退出也退出不了,換而言之,就是卡死在了pdb里面),如果你使用的是更高版本的spyder的話,這個bug可能已經(jīng)修復了,可以嘗試一下.

打斷點的兩種姿勢

普通的breakpoint

用spyder打斷點的方法非常簡單,只要在想打斷點的那一行行首雙擊鼠標即可,如圖所示,我們嘗試建立一個斷點:

break_point

在每次開始debug之前,先在spyder的ipython界面中輸入%reset 把工作空間的所有變量清除,以免影響到我們接下來的測試.
按下Ctrl+F5開始debug,進行如圖所示的操作:

to_breakpoint

然后我們就到達了斷點處,從箭頭(–>)以及d:\ide\pyproject\pdbtest\test1.py(12)<module>() 中的數(shù)字12可以看出程序剛剛執(zhí)行到了第12行(也就是我們打斷點的這一行),第12行到底有沒有執(zhí)行呢?只要測試一下f變量是否存在就可以了,嘗試在ipdb中進行如下輸入:

ipdb

!(python語句)的意思就是在當前狀態(tài)下執(zhí)行該python語句,我剛剛的用法的意思顯然是查看變量內(nèi)容,從!f 的錯誤信息可以看出f尚未定義,即第12行代碼(f='f')還沒有執(zhí)行,查看e變量發(fā)現(xiàn)e變量已經(jīng)被定義了,這說明第11行已經(jīng)執(zhí)行結束了。通過以上實驗可以看出,spyder會在斷點語句的執(zhí)行之前中斷

帶條件的breakpoint

雙擊剛剛在第12行代碼開頭創(chuàng)建的“小紅點”即可取消斷點。
按住Ctrl+Shift,然后像剛才一樣雙擊第12行行首,會彈出一個小框:

condition

在這個小框內(nèi)可以輸入斷點的條件,可以是任意返回True或False的python語句,比如我輸入

(a==4)and(b==5)

然后點擊OK按鈕,發(fā)現(xiàn)小紅點上多了一個問號,這個表示條件斷點(conditional breakpoint),開始debug試一下.

debug

發(fā)現(xiàn)程序只在第一句中斷一下,斷點根本就沒有起作用,因為在斷點的時候,a變量為'a',b變量為'b',不符合條件當然不會中斷.

現(xiàn)在重新開始debug,然后連續(xù)按三遍Ctrl+F10,然后發(fā)現(xiàn)程序執(zhí)行到了第十行:

ctrl_f10

其實Ctrl+F10是單行執(zhí)行的意思,每按一次執(zhí)行一行,相當于點擊了工具欄上如下圖所示的按鈕:

run_current_line

這個時候我可以使用剛剛講過的!(python語句)來給a,b臨時指定一個值,在ipdb的提示符中輸入!a=4;b=5 ,然后使用c命令繼續(xù)執(zhí)行,發(fā)現(xiàn)在條件斷點處中斷了,因為此時滿足了我們剛剛給條件斷點指定的條件:

condition_break

如果忘記了條件斷點的條件是什么的話,可以按住Ctrl+Shift鍵雙擊“帶問號的小紅點”,然后就能看見條件是什么了,而且還可以修改條件,如果要取消斷點的話,直接雙擊就可以了。

總結一下剛剛所講的

  1. Ctrl+F5 以Debug模式運行文件
  2. 在debug之前記得用%reset 指令清空一下ipython工作空間中的變量,以免影響debug中變量值的查看
  3. 無論你是否打斷點,都會在第一行語句執(zhí)行之前中斷一次
  4. !(python語句)可以在pdb提示符下執(zhí)行python語句,可以用來查看變量值或者給變量臨時指定值
  5. c命令或者Ctrl+F12可以讓程序執(zhí)行到下一個斷點
  6. q命令退出調(diào)試
  7. Ctrl+F10 單行執(zhí)行
  8. 雙擊行首設置斷點,按住Ctrl+Shift 雙擊行首可以設置條件斷點

剩下的一些細節(jié)

上面的例子已經(jīng)包括了大多數(shù)常用的功能,如果曾經(jīng)用過別的編譯器的調(diào)試功能的話(如eclipse和IntelliJ等),看到這里就可以了,對于有調(diào)試經(jīng)驗的人來說,我下面要講的兩個功能只要看到按鈕的名稱就大概知道它是做什么的了.
如下:

step_into

return

Step Into

上面一張圖的按鈕的功能我們稱之為Step Into(下面一張圖的按鈕的功能我們稱之為return),用于進入一個函數(shù)體內(nèi)部,為了更清楚的說明它的功能,我們給出一個例子,在spyder中創(chuàng)建如下程序:

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 29 14:22:46 2017

@author: 燃燒杯
"""

def myTest():
    c = 'a'
    d = 'b'
    e = 'c'
    return c

a = 'a'
b = 'b'
c = myTest()
f = 'f'
print(a)

我們開始debug,不斷地按Ctrl+F10 單行執(zhí)行這個程序,當運行到c = myTest() 這句時注意一下:

not_step_into

不管myTest()中有多少代碼都直接當做一行跳了過去,用q命令退出調(diào)試。
重新debug該文件,單行執(zhí)行到c = myTest() 這行時按Ctrl+F11 使用Step Into功能,發(fā)現(xiàn)我們進入了函數(shù)內(nèi)部的代碼段:

step_into

這就Step Into的主要功能.

Return

Return的功能與Step Into的功能剛好相反,當使用Step Into進入函數(shù)之后,按Ctrl+Shift+F11 后會直接跳到該函數(shù)的執(zhí)行的最后一行,此時在按一遍Ctrl+Shift+F11 或者Ctrl+F10 (單行執(zhí)行)就可以跳出函數(shù)了,想要嘗試的話可以自行在我上面給出的例子中嘗試.

到此這篇關于使用spyder3調(diào)試python程序的實現(xiàn)步驟的文章就介紹到這了,更多相關spyder3調(diào)試python內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python抓取skywalking中超過2s的告警接口

    python抓取skywalking中超過2s的告警接口

    這篇文章主要為大家介紹了python抓取skywalking中超過2s的告警接口詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Pytorch搭建SRGAN平臺提升圖片超分辨率

    Pytorch搭建SRGAN平臺提升圖片超分辨率

    這篇文章主要為大家介紹了Pytorch搭建SRGAN平臺提升圖片超分辨率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • python使用標準庫根據(jù)進程名如何獲取進程的pid詳解

    python使用標準庫根據(jù)進程名如何獲取進程的pid詳解

    Python有一套很有用的標準庫(standard library)。標準庫會隨著Python解釋器,一起安裝在你的電腦中的,所以下面這篇文章主要給大家介紹了關于python使用標準庫根據(jù)進程名如何獲取進程pid的相關資料,需要的朋友可以參考下。
    2017-10-10
  • 對pandas中apply函數(shù)的用法詳解

    對pandas中apply函數(shù)的用法詳解

    下面小編就為大家分享一篇對pandas中apply函數(shù)的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • tensorflow學習筆記之tfrecord文件的生成與讀取

    tensorflow學習筆記之tfrecord文件的生成與讀取

    這篇文章主要介紹了tensorflow學習筆記之tfrecord文件的生成與讀取,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Python實現(xiàn)將Excel轉換為json的方法示例

    Python實現(xiàn)將Excel轉換為json的方法示例

    這篇文章主要介紹了Python實現(xiàn)將Excel轉換為json的方法,涉及Python文件讀寫及格式轉換相關操作技巧,需要的朋友可以參考下
    2017-08-08
  • 詳解Python中的type和object

    詳解Python中的type和object

    這篇文章主要介紹了Python中type和object的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程

    Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程

    smtplib模塊一般我們比較熟悉、這里我們會來講解使用smtplib發(fā)送SSL/TLS安全郵件的方法,而poplib模塊則負責處理接收pop3協(xié)議的郵件,下面我們就來看Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程
    2016-07-07
  • 使用python的pexpect模塊,實現(xiàn)遠程免密登錄的示例

    使用python的pexpect模塊,實現(xiàn)遠程免密登錄的示例

    今天小編就為大家分享一篇使用python的pexpect模塊,實現(xiàn)遠程免密登錄的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • PythonQT5打包exe線程使用

    PythonQT5打包exe線程使用

    本文介紹了使用Python和QT5打包EXE文件,并在其中使用線程,打包時需要修改spec文件以加載資源文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01

最新評論

顺义区| 怀集县| 西丰县| 武清区| 长沙市| 开江县| 康马县| 德令哈市| 平凉市| 定州市| 黔江区| 灵台县| 会宁县| 南宁市| 社旗县| 秦皇岛市| 甘南县| 个旧市| 永和县| 全椒县| 尚志市| 松潘县| 藁城市| 珠海市| 新沂市| 长武县| 清苑县| 尚义县| 米林县| 岚皋县| 武清区| 新和县| 民权县| 汝州市| 兴海县| 吉安市| 察哈| 临安市| 岳普湖县| 永嘉县| 吉首市|