<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用Icecream提高Python調(diào)試效率

          共 2130字,需瀏覽 5分鐘

           ·

          2021-01-19 01:34


          點(diǎn)擊上方AI算法與圖像處理”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

          動(dòng)機(jī)


          使用print來(lái)調(diào)試代碼,你會(huì)發(fā)現(xiàn)查看終端上的許多行輸出,然后試圖找出每個(gè)輸出屬于哪些代碼,這是一個(gè)非常繁瑣的過(guò)程。


          例如運(yùn)行下面的程序

          num1 = 30num2 = 40 
          print(num1)print(num2)

          輸出結(jié)果如下

          3040

          這些輸出中哪一個(gè)是num1?這些輸出中哪一個(gè)是num2?兩個(gè)輸出可能不是那么糟糕,但是如果有超過(guò)5個(gè)不同的輸出呢?試圖找到負(fù)責(zé)輸出的源代碼可能會(huì)非常耗時(shí)。


          當(dāng)然,可以嘗試在print語(yǔ)句中添加文本來(lái)進(jìn)行標(biāo)記,以便更容易地理解:

          num1 = 30num2 = 40 
          print('num1', num1)print('num2', num2)

          num1 30num2 40

          但同樣,輸出文本也會(huì)非常耗時(shí)。是否有一種方法可以打印負(fù)責(zé)輸出的代碼,而不需要輸出額外的文本呢?


          這就是冰淇淋派上用場(chǎng)的時(shí)候了!

          num1 = 30num2 = 40 
          ic(num1)ic(num2)
          ic| num1: 30ic| num2: 40

          什么是冰淇淋?


          Icecream是一個(gè)Python庫(kù),可通過(guò)最少的代碼使打印調(diào)試更具可讀性。


          使用下面的代碼安裝冰淇淋

          $ pip install icecream

          讓我們通過(guò)打印Python函數(shù)的輸出來(lái)進(jìn)行嘗試。

          from icecream import ic 
          def plus_five(num): return num + 5
          ic(plus_five(4))ic(plus_five(5))

          通過(guò)使用ic,我們不僅可以看到輸出,還可以看到函數(shù)及其參數(shù)!多么方便!終端中的顏色也將與上面顯示的輸出一樣多彩。


          檢查執(zhí)行情況


          要查找代碼執(zhí)行的位置,可以執(zhí)行下面所示的操作,以查找執(zhí)行的語(yǔ)句。

          def hello(user:bool):    if user:        print("I'm user")    else:        print("I'm not user")
          hello(user=True)
          I'm user

          通過(guò)運(yùn)行ic()而不需要額外的文本,Icecream可以讓您更容易地完成上面的工作。

          from icecream import ic 
          def hello(user:bool): if user: ic() else: ic()
          hello(user=True)

          現(xiàn)在就可以知道函數(shù)hello中的第5行的代碼已執(zhí)行,而第7行的代碼未執(zhí)行。


          自定義前綴


          如果想要插入一個(gè)自定義前綴,例如對(duì)print語(yǔ)句執(zhí)行代碼的時(shí)間,那么icecream也允許這樣做。

          from datetime import datetimefrom icecream import ic import timefrom datetime import datetime
          def time_format(): return f'{datetime.now()}|> '
          ic.configureOutput(prefix=time_format)
          for _ in range(3): time.sleep(1) ic('Hello')

          現(xiàn)在代碼執(zhí)行的時(shí)間會(huì)自動(dòng)顯示在輸出中!是不是超酷的!


          獲得更多的上下文信息


          除了了解負(fù)責(zé)輸出的代碼之外,你可能還想知道代碼執(zhí)行的行和文件來(lái)自哪個(gè)行。要了解代碼的上下文,只需要將includeecontext = True添加到ic.configureOutput ()中即可。

          from icecream import ic 
          def plus_five(num): return num + 5
          ic.configureOutput(includeContext=True)ic(plus_five(4))ic(plus_five(5))

          現(xiàn)在就可以知道第一個(gè)輸出是由icecream_example.py文件中的第7行的plus_five函數(shù)執(zhí)行的。


          總結(jié)


          現(xiàn)在我們已經(jīng)學(xué)會(huì)了如何使用icecream使打印更具可讀性。Icecream是一個(gè)很好的調(diào)試工具,希望你也會(huì)發(fā)現(xiàn)它的高效。


          ·? END? ·


          HAPPY?LIFE

          下載1:何愷明頂會(huì)分享


          AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析


          下載2:終身受益的編程指南:Google編程風(fēng)格指南


          AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!



          下載3 CVPR2020

          AI算法與圖像處公眾號(hào)后臺(tái)回復(fù):CVPR2020即可下載1467篇CVPR?2020論文
          個(gè)人微信(如果沒(méi)有備注不拉群!
          請(qǐng)注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱


          覺(jué)得不錯(cuò)就點(diǎn)亮在看吧

          瀏覽 50
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲日韩欧美激情 | 亚洲精品水蜜桃 | 午夜亚洲一区 | 性生活无码视频 | 偷拍肏屄视频 |