<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>

          干貨|python基礎(chǔ)知識總結(jié)

          共 4031字,需瀏覽 9分鐘

           ·

          2021-04-25 10:27

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          Python是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設計語言。它有著代碼簡潔、可讀性強的特點。代碼簡潔是因為它把許多的復雜的操作封裝起來,將C語言中麻煩的指針和內(nèi)存管理對開發(fā)者隱藏起來,使得在開發(fā)過程中,無須在意這部分的細節(jié)。另外Python這們語言強制用戶用縮進進行排版,若不好好排版,則代碼編譯無法通過,或者運行過程會出現(xiàn)錯誤。


          Python程序的執(zhí)行過程和C語言不一樣,使用Python寫的程序在運行過程中 Python解釋器會把源代碼轉(zhuǎn)換為字節(jié)碼,再由Python虛擬機來執(zhí)行這些字節(jié)碼。而C程序則是計算機直接執(zhí)行由C源代碼編譯的機器指令。


          在使用Python的時候需要留意你所使用的Python版本,因為Python2.X和Python3.X有較大的改動。最主要的是Python3默認編碼為utf-8,并且Python2中的print語句變成了print函數(shù)。其他變動在此不一一說明。


          有關(guān)Python的特點只需了解就好,這些在代碼實戰(zhàn)會體會到。


          一、基礎(chǔ)數(shù)據(jù)類型


          Python是一門弱類型語言,變量使用前無需聲明,變量名可以看作一種引用。Python的基本數(shù)據(jù)類型分為數(shù)字、字符串、列表、元組、集合、字典。


          其中數(shù)字包括整型、浮點型、布爾型、以及復數(shù)。Python的整型數(shù)可以有無限精度,浮點數(shù)默認為double類型保留16位小數(shù),如果你需要更高的精度,則可以使用decimal模塊。在python中,布爾型為數(shù)字的一種,True 和 1等價,False和0等價,(你會發(fā)現(xiàn)True == 1這語句為真,且True+True的值等于2),復數(shù)的實部和虛部均為浮點數(shù)。


          列表、元組、字典、集合、字符串是Python中經(jīng)常會使用到的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)的方法都要能熟練使用。


          列表、元組、字符串是非常相似的,他們都是順序存儲結(jié)構(gòu),元素之間有固定的順序,并且它們都可以用 + 和相同類型的數(shù)據(jù)類型拼接起來。他們的差別是:列表內(nèi)的元素可以修改,元組和字符串是不可變數(shù)據(jù)類型,即元祖和字符串的元素不能修改(如果把每一個字符當成字符串的元素的話)。


           其中元組和字符串的不可改變也不一樣,如果對想修改字符串,等價新建新的字符串(字符串的是完全不能修改)。


          而元組是不能修改元組內(nèi)對元素的引用。當你的元組里嵌套了一個列表時,你發(fā)現(xiàn)列表內(nèi)的元素可以修改,但是你不能把列表這個元素換成其他元素。因為元祖該位置保存著該列表的引用,該引用不能修改。修改列表內(nèi)的元素并不會改變元組對該列表的引用。


          除此以為,列表、元組、字符串都能用索引訪問元素,可以使用切片操作,可以用for  in 循環(huán)按順序迭代元素。其中元祖的性能比列表的性能稍微高一點點,這在數(shù)據(jù)量大的時候才比較明顯,但在機器學習中通常都是使用numpy的數(shù)組。


          字符串的使用自不用說,列表往往使用來處理數(shù)據(jù)時使用(處理完直接append到列表里),元祖就比較少用到。有關(guān)字符串、列表的操作一定要熟練掌握。

                  

          字典記錄了鍵值的映射關(guān)系,可以迭代,可以修改,但是字典沒辦法保證安裝你添加順序進行迭代。此外使用字典會比列表更占用內(nèi)存,但字典的訪問更快。


          在使用字典的時候還有許多技巧,當你想判斷某個鍵是否在字典里的時候,在數(shù)據(jù)量巨大的時候,用in操作會很慢,而如果你直接訪問用鍵來訪問,并將此語句放在try/except內(nèi),速度會明顯提高(in操作相當于遍歷查找,如果字典無此鍵,這需要遍歷整個字典;但如果直接訪問,就能利用哈希表的優(yōu)點,迅速查找,如果找不到也會因為拋出異常而進入except語句塊)。

                  

          集合也是一種無序無重復元素的數(shù)據(jù)結(jié)構(gòu),所以我們可以把列表轉(zhuǎn)化為集合達到數(shù)據(jù)去重的效果,這是制作詞袋經(jīng)常使用的技巧。同時也要注意集合內(nèi)存放的都是不可變對象。


          有些時候我們還需要對數(shù)據(jù)進行拷貝操作,這時我們要注意是否需要深拷貝的情況。當列表、字典存在嵌套的時候,如果用淺拷貝或者切片。則會導致嵌套里面的列表或字典仍為同一個對象,一處修改導致同時修改的情況。這是應該使用copy模塊的deepcopy方法來進行拷貝。


          機器學習的操作對象是數(shù)據(jù),所以以上的數(shù)據(jù)類型必須要能夠熟練的運用。


          二、循環(huán)


          Python的循環(huán)簡單易上手,while循環(huán)和C語言一樣,但for in 循環(huán)就很像java的foreach循環(huán)(java foreach循環(huán)不能修改迭代元素,而Python的for in可以)。for in 循環(huán)在迭代列表、元組等可迭代類型非常方便。例:


          >>>abc =  ['a', 'b', 'c']>>> for item in abc:                 print(item)


          也可以用range用索引迭代:

             >>> for index in range(len(abc)):     print abc([index])



          三、文件IO


          在處理數(shù)據(jù)的時候,我們往往需要從文件中讀取數(shù)據(jù)。所以文件IO操作必不可少的。


          Python的文件操作很簡單,只需用open打開文件

                      file = open(path,pattern)



          由上可知,上面文件IO的模式和C的差不多,除此之外,有些時候還要設置編碼等等。


                  read是一次性讀完文件,但是當讀取內(nèi)容大于內(nèi)存大小不能使用read。

                  readline和readlines都是逐行讀取,但是readlines是一次性讀取之后,每一行轉(zhuǎn)為列表的一個元素。readlines比readline要快。


                  當使用write寫入時,若寫入的內(nèi)容大于緩沖區(qū),則會直接寫入文件(一般會先寫入緩存區(qū))。writeline則是可以把列表當做參數(shù)寫入。一般寫入操作之后都應調(diào)用flush方法,把緩存區(qū)的內(nèi)容寫到文件去。


                  在完成文件IO之后要關(guān)閉文件,否則就會占用系統(tǒng)資源,可以用try/finally確保文件關(guān)閉,用with語句可以更方便些(with語句結(jié)束自動關(guān)閉文件)。


          四、函數(shù)


          Python中用def關(guān)鍵字來定義函數(shù),格式為

                      def 函數(shù)名(參數(shù)):

                


          函數(shù)參數(shù):

          接下來將詳細將函數(shù)的參數(shù)類型,函數(shù)的參數(shù)有4種分別是:必選參數(shù)、默認參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù)


          必選參數(shù):必選參數(shù)需要按照函數(shù)聲明的順序傳入,和C語言的函數(shù)參數(shù)一樣

          默認參數(shù):如果該參數(shù)沒有傳入,則傳入默認取值

          可變關(guān)鍵字:可變關(guān)鍵字就是傳入的參數(shù)個數(shù)是可變的。

          也可以傳入一個列表或元組,在參數(shù)前加上*

          關(guān)鍵字參數(shù):關(guān)鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個字典

          也可以傳入一個dict,在參數(shù)前加上**

          在Python中定義函數(shù),可以用必選參數(shù)、默認參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù),這4種參數(shù)都可以一起使用,或者只用其中某些,但是請注意,參數(shù)定義的順序必須是:必選參數(shù)、默認參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù)。


          返回值:

          函數(shù)可以有0個或多個返回值,直接return沒有返回值實際上是返回了None,返回多個值時,上還是返回一個元組,元組可以對多個變量對應賦值。(其實就是序列解包)



          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 49
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  国内特级毛片 | 天堂在线中文视频 | 男女操逼亚洲国产免费 | 超碰国产人人操 | 骚逼导航 |