您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“零基礎(chǔ)如何學(xué)Python”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“零基礎(chǔ)如何學(xué)Python”吧!
1、建立開發(fā)環(huán)境
建立開發(fā)環(huán)境非常重要,。做任何開發(fā),首先就是要把這個(gè)環(huán)境準(zhǔn)備好,之后就可以去做各種嘗試,嘗試過程中的話就能逐漸建立信心。初學(xué)者往往在環(huán)境配置中被各種預(yù)想不到的問題弄得很沮喪。
目前來說,使用Python的工作環(huán)境有如下幾種:
命令行交互環(huán)境:這是Python原生支持的工作環(huán)境,直接在命令行與Python進(jìn)行交互。
文本編輯環(huán)境:是集成開發(fā)環(huán)境的一種精簡(jiǎn)版,以Sublime-Text這類文本編輯器為代表。這種環(huán)境僅保留幫助你編寫代碼的核心組件,主要是提供給單人工作的場(chǎng)景使用,在沒有太多分工協(xié)作的前提下專注于代碼的編寫。
集成開發(fā)環(huán)境:如果想要使用Python編寫較大的工程項(xiàng)目,特別是在很多人協(xié)同工作的情況下,可以考慮使用PyCharm這樣的大型集成開發(fā)環(huán)境(IDE)。在這種環(huán)境下,IDE會(huì)將許多開發(fā)中需要的功能集成在一起,便于我們的使用。
交互研究環(huán)境:在這種交互研究環(huán)境下,每次的代碼都相當(dāng)于是在之前代碼上的增量,從而保證只有發(fā)生變化的部分被重新執(zhí)行,無需對(duì)不發(fā)生改變的部分重新計(jì)算。特別適用于研究人員快速驗(yàn)證模型的正確性。
初學(xué)者一般使用文本編輯環(huán)境就可以,當(dāng)然也要了解如何在命令行中輸入代碼與Python進(jìn)行交互。
2、了解編程語言基礎(chǔ)
有了工作環(huán)境后,我們就可以開始編寫和執(zhí)行Python程序了。
Python這類腳本程序其實(shí)就像是一段“電影腳本”,按照從前往后的順序規(guī)定了一系列的動(dòng)作,指揮著你電腦的CPU、硬盤、操作系統(tǒng)等部件干這干那。所以為了讓電腦能夠看懂,你編寫的這段“電影腳本”需要按照電腦所使用的語言進(jìn)行編寫。例如print("hello world!")這樣一句話就會(huì)讓電腦調(diào)用一系列部件,最后在屏幕上輸出它對(duì)世界的問好;而a=3+5這樣一句話就會(huì)讓電腦計(jì)算3+5的答案,然后將答案放入一個(gè)名字為a的“盒子”當(dāng)中。
所以初期你學(xué)習(xí)的是一些編寫“電影腳本”的語法規(guī)則,在這個(gè)過程中你會(huì)逐漸了解到編程語言的一些基本元素:
· 變量:變量就像是一個(gè)個(gè)存放了東西的盒子,用來保存一些臨時(shí)的值或者那些需要多次使用的值。變量有不同的基本類型,比如數(shù)字和字符串類型。
· 運(yùn)算符:變量顧名思義,是可以不斷變化的,而變化的手段就是對(duì)變量就行操作(或者稱之為運(yùn)算)。運(yùn)算符是Python語言中一種直觀的數(shù)據(jù)操作方式,它可以對(duì)特定的一個(gè)或者多個(gè)變量或常量進(jìn)行運(yùn)算并返回結(jié)果。比如最簡(jiǎn)單的加減乘除在Python語言中都有對(duì)應(yīng)的運(yùn)算符。
· 條件控制:在Python程序執(zhí)行的過程中,我們需要根據(jù)當(dāng)前的狀況來判斷接下來讓電腦做什么,這就是條件控制語句,它會(huì)將“劇本”拆分成兩部分,在一種情況下執(zhí)行第一部分,在剩下的情況執(zhí)行第二部分。
· 循環(huán)控制:有一些腳本我們有時(shí)候可能要重復(fù)執(zhí)行,或者它們有很大程度的公共部分(例如輸出1到100之間的100個(gè)整數(shù),每次輸出就非常相似),我們就會(huì)使用循環(huán)控制語句。我們也可以中斷一次循環(huán)(continue)或者跳出循環(huán)(break)。
使用這些元素,我們就能完成大部分的計(jì)算了,你可以編寫一些簡(jiǎn)單的程序,也可以在命令行中通過這些語言元素對(duì)Python虛擬機(jī)發(fā)號(hào)施令啦。當(dāng)然,如果你學(xué)習(xí)過另外一門語言,這部分基礎(chǔ)是信手拈來的,那么對(duì)你來說更多是熟悉和適應(yīng)Python的語法風(fēng)格。
3、掌握數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)
為了能夠完成更復(fù)雜的計(jì)算場(chǎng)景,Python提供了若干種內(nèi)置的數(shù)據(jù)結(jié)構(gòu)。所謂數(shù)據(jù)結(jié)構(gòu),你可以認(rèn)為一組變量以某個(gè)特定的方式組織在一起,而不僅僅是單個(gè)獨(dú)立的變量。通過特定的組織方式,在處理某些運(yùn)算時(shí)能夠能夠大大提高編程的效率。數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專業(yè)的一門必修專業(yè)課,更高級(jí)的數(shù)據(jù)結(jié)構(gòu)及其內(nèi)部實(shí)現(xiàn)方式你需要專門學(xué)習(xí),不過Python的數(shù)據(jù)結(jié)構(gòu)可以是一個(gè)非常好的學(xué)習(xí)起點(diǎn)。
Python內(nèi)置的數(shù)據(jù)結(jié)構(gòu)包含如下四種:
列表:列表(list)在Python的語法中是一種有序且長(zhǎng)度可變的集合,可以隨時(shí)對(duì)其中的元素進(jìn)行添加、刪除和修改。我們往往可以用列表來表示各種隊(duì)列、數(shù)組這種“有序”的序列。
元組:元組(tuple)和列表基本相同,都是有序的序列,其區(qū)別在于元組內(nèi)的元素一旦定義,就不能夠再進(jìn)行修改,只能夠通過下標(biāo)對(duì)元組內(nèi)部的元素進(jìn)行訪問。使用元組,我們可以將一些數(shù)據(jù)有機(jī)的組合在一起進(jìn)行表示。
·集合:集合(Set)作為一個(gè)復(fù)雜數(shù)據(jù)類型,如其在數(shù)學(xué)中的定義一樣,在Python中也是起到表示一系列值的“集合”的作用。使用集合,我們可以快速的判斷某個(gè)元素的存在性。
字典:字典(Dict)在數(shù)學(xué)中并沒有對(duì)應(yīng)的定義,它更像是從生活中的字典借鑒而來的一種數(shù)據(jù)類型。例如手機(jī)通訊錄就是一個(gè)典型的可以使用字典來存儲(chǔ)的數(shù)據(jù)集。依靠字典,我們可以很方便的根據(jù)某個(gè)元素ID(例如編號(hào)、名字等)來查找到它。
這四種數(shù)據(jù)結(jié)構(gòu)能夠覆蓋大部分我們所工作的場(chǎng)景,天碼營(yíng)的課程提高了更多實(shí)例,熟練掌握這四種數(shù)據(jù)結(jié)構(gòu),你會(huì)發(fā)現(xiàn)編程效率會(huì)大大提高。
4、掌握函數(shù)的基本概念
在實(shí)際編寫程序的過程中,某些代碼可能會(huì)反復(fù)執(zhí)行多次。而這些代碼除了變量不同外,沒有任何的區(qū)別。這些代碼實(shí)際上類似于數(shù)學(xué)表達(dá)式中的函數(shù)f(x),當(dāng)我們給x賦值時(shí),就會(huì)得到對(duì)應(yīng)的結(jié)果。在Python中也提供了這樣的特性,同樣稱之為“函數(shù)”。
函數(shù)將需要反復(fù)使用的代碼進(jìn)行模塊化,從而減少了代碼的重復(fù),同時(shí)還增加了可讀性和可維護(hù)性。當(dāng)需要修改時(shí),只要改變定義內(nèi)的代碼,就可以完成對(duì)每一次執(zhí)行的修改。
定義函數(shù)的語法其實(shí)很簡(jiǎn)單,關(guān)于函數(shù)重點(diǎn)需要掌握的是函數(shù)的參數(shù)定義。Python函數(shù)的參數(shù)定義(即如何定義函數(shù)的輸入)非常有特色,比如:
默認(rèn)參數(shù)
可變參數(shù)
關(guān)鍵字參數(shù)
命名關(guān)鍵字參數(shù)
本質(zhì)上這些特性使得函數(shù)調(diào)用者進(jìn)行傳參時(shí)會(huì)更加得心應(yīng)手。
5、面向?qū)ο缶幊?/p>
面向?qū)ο笫且环N非常符合人類思維的編程方法,因?yàn)楝F(xiàn)實(shí)世界就是由對(duì)象和對(duì)象之間的交互來構(gòu)成的,所以我們其實(shí)很容易將現(xiàn)實(shí)世界映射到軟件開發(fā)中。舉個(gè)例子,一輛汽車、一篇博客、一個(gè)人,對(duì)應(yīng)到軟件系統(tǒng)中都是一個(gè)對(duì)象;而對(duì)象具有自己的狀態(tài)和行為。
面向?qū)ο螅侯惖亩x
你需要了解一個(gè)面向?qū)ο缶幊痰暮诵母拍睿骸邦悺?。類描述一類?duì)象的狀態(tài)和行為的模板??梢园杨愊胂蟪梢粋€(gè)汽車設(shè)計(jì)圖,根據(jù)這個(gè)汽車設(shè)計(jì)圖生產(chǎn)出來的每一輛汽車就是類的一個(gè)實(shí)例,這些實(shí)例就稱之為對(duì)象。
狀態(tài)和行為,對(duì)應(yīng)到Python語言中,就是一個(gè)類和對(duì)象的屬性和方法(類中的函數(shù)一般稱之為方法),屬性方法可以進(jìn)行外部的訪問控制,從實(shí)現(xiàn)“封裝”這一面向?qū)ο筇匦浴?/p>
所以對(duì)應(yīng)到Python這門編程語言,首先你需要了解如何定義類,以及定義類的屬性和方法。
面向?qū)ο螅豪斫饫^承和多態(tài)
在“封裝”的基礎(chǔ)上,面向?qū)ο缶幊踢€有“繼承”和“多態(tài)”的特型。假如我們有一個(gè)動(dòng)物(Animal)類,它包含有動(dòng)物最基本的一些特型?,F(xiàn)在我們要新寫一個(gè)犬(Dog)類,顯然我們知道犬也是動(dòng)物的一種,因此它也肯定包含動(dòng)物類的全部特性。因此我們利用“繼承”的特型,并不需要將動(dòng)物類的所有代碼在犬類中重寫一遍,而是在創(chuàng)建犬類時(shí)繼承動(dòng)物類。此時(shí)我們將動(dòng)物類稱之為犬類的父類,犬類稱為動(dòng)物類的子類。而“多態(tài)”的特性使得犬類在繼承動(dòng)物類的方法時(shí),也可以重寫這寫方法,使得它更有符合犬的特征。
面向?qū)ο缶幊谭椒ǖ脑诖笮晚?xiàng)目中被廣泛的應(yīng)用?,F(xiàn)在人們談?wù)摰矫嫦驅(qū)ο缶幊虝r(shí),不僅僅是一種程序設(shè)計(jì)方法,更多意義上是一種程序開發(fā)方法,了解面向?qū)ο缶幊虝r(shí)每個(gè)程序員必須要做的事。
6、學(xué)習(xí)函數(shù)式編程
也許你還覺得函數(shù)式編程很陌生,但許多的函數(shù)式編程風(fēng)格已經(jīng)漸漸開始流行。什么叫函數(shù)式編程呢?事實(shí)上只要語言將函數(shù)作為一等公民(或者借助工具達(dá)到類似效果) 就可以支持函數(shù)式編程。而將函數(shù)作為一等公民意味著函數(shù)可以像變量一樣傳參、賦值和返回。函數(shù)式編程的書寫方式使得代碼編寫的效率更加高,極大地提高生產(chǎn)效率。
你需要了解高階函數(shù)、匿名函數(shù)(lambda表達(dá)式),閉包等一些基本概念;了解函數(shù)式編程最好的方式是從下面幾個(gè)非常實(shí)用的高階函數(shù)開始。
函數(shù)式編程:了解高階函數(shù)的用法
函數(shù)式編程:
map
map多用于對(duì)列表數(shù)據(jù)的處理,它將一個(gè)方法依次對(duì)序列的每一個(gè)元素使用,比如:
def f(x): return x*x map(f, [1,2,3])
該代碼就會(huì)得到[f(1),f(2),f(3)],所以結(jié)果是[1,4,9]
reduce
reduce利用遞歸的思想,會(huì)將前一次的計(jì)算結(jié)果作為第一個(gè)參數(shù),將下一個(gè)元素作為第二個(gè)參數(shù)進(jìn)行計(jì)算:
def f(x1,x2): return x1*x2 reduce(f, [1,2,3,4])
實(shí)際上等價(jià)于f(f(f(1,2),3),4),結(jié)果也就是24了
filter
filter會(huì)根據(jù)傳入函數(shù)對(duì)象f的計(jì)算結(jié)果對(duì)原序列進(jìn)行篩選,對(duì)于一個(gè)元素x, 留下f(x)為真(True)的元素,刪除f(x)為假(False)的元素
sort
sort會(huì)根據(jù)函數(shù)的返回結(jié)果來判定兩個(gè)數(shù)的大小關(guān)系,并依次作為依據(jù)對(duì)序列內(nèi)元素進(jìn)行排序,比如:
def compare(x, y): return y - x #逆序 myList.sort(compare)
最后得到的myList就會(huì)是從大到小排列的序列。
函數(shù)式編程:lambda表達(dá)式
lambda表達(dá)式就是匿名函數(shù),它直接實(shí)現(xiàn)了函數(shù),而不需要定義函數(shù)名。比如上面排序的代碼,我們就可以這樣實(shí)現(xiàn):
myList.sort(lambda x,y: y-x)
通過lambda表達(dá)式直接定義使用,這樣就不需要去額外定義一個(gè)compare方法,代碼會(huì)更加簡(jiǎn)潔。
函數(shù)式編程:閉包
在一般的函數(shù)中,返回值都是諸如數(shù)字、字符串之類的對(duì)象。但實(shí)際上函數(shù)的返回值可以是一個(gè)函數(shù)。返回的函數(shù)不僅僅包含有其自身的代碼,也同時(shí)包含了調(diào)用時(shí)的參數(shù),并且多次返回的函數(shù)之間互不干擾,這一特性被稱為“閉包(closure)”。
函數(shù)式編程的學(xué)習(xí)并不復(fù)雜,學(xué)會(huì)使用函數(shù)式編程往往能夠起到事半功倍的效果。能夠熟練的使用Python函數(shù)式編程也是每個(gè)Python程序員應(yīng)該掌握的能力。
7、掌握更多標(biāo)準(zhǔn)庫中的模塊
我們都說Python簡(jiǎn)單好用,方便易學(xué),很大部分要?dú)w功于Python提供的功能強(qiáng)大的標(biāo)準(zhǔn)庫。標(biāo)準(zhǔn)庫意味著,Python已經(jīng)幫我們封裝好了很多底層功能,我們拿來即用。因此,標(biāo)準(zhǔn)庫中的一些基礎(chǔ)模塊我們需要掌握。
輸入輸出:最為“基礎(chǔ)”的模塊便是對(duì)輸入輸出的編程,我們都知道可以通過input(),output()來完成對(duì)數(shù)據(jù)的輸入和輸出。但是如果想要讀取的是圖片?二進(jìn)制文件?甚至于各類奇怪格式的文件。這種時(shí)候,我們就需要通過IO編程來完成對(duì)這一過程的定制化。
異常處理:我們編寫的程序也可能產(chǎn)生許多錯(cuò)誤,甚至有些錯(cuò)誤是我們?cè)谠O(shè)計(jì)時(shí)就預(yù)計(jì)產(chǎn)生的。但是我們不能讓這些錯(cuò)誤影響我們程序的運(yùn)行。例如,使用Python爬蟲獲取1000個(gè)網(wǎng)頁,如果在開始爬第一個(gè)網(wǎng)頁的時(shí)候程序就出錯(cuò)了,那么一般情況下我們的程序就會(huì)自動(dòng)終止,從而后續(xù)的網(wǎng)頁也都不會(huì)爬取。但是我們可以使用異常處理,來“catch”住這些錯(cuò)誤,將沒有成功獲取的網(wǎng)頁記錄下來,然后繼續(xù)處理后續(xù)的網(wǎng)頁?;谶@樣的方式,我們就可以安心的讓程序跑上一個(gè)晚上,然后在第二天回來處理那些產(chǎn)生了異常的網(wǎng)頁。
多進(jìn)程與多線程:我們還可以通過多進(jìn)程和多線程使得我們的Python程序擁有可以并行處理諸多復(fù)雜事物的功能。并行是一種能夠充分利用計(jì)算機(jī)計(jì)算核心(CPU/GPU)性能的方法。在目前單核計(jì)算能力增長(zhǎng)逐漸放緩的現(xiàn)在,并行是少有的能夠大大增加計(jì)算速度的技術(shù)了。想象一下,使用單核CPU訓(xùn)練一次模型如果需要20小時(shí),通過多核GPU(GPU內(nèi)部本身就是并行的)就很有可能將這個(gè)時(shí)間縮短到1小時(shí)內(nèi)。這會(huì)大大增加對(duì)模型參數(shù)的調(diào)整效率。
到此,相信大家對(duì)“零基礎(chǔ)如何學(xué)Python”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。