零基礎學Python入門的詳細路徑,我為你準備好了

零基礎學Python入門的詳細路徑,我為你準備好了!

作為一門優美、精巧的編程語言,Python不僅僅適合作為編程入門,對於希望掌握實戰開發技能進而從事編程工作的人來說,Python也是一個很不錯的選擇。

零基礎學Python入門的詳細路徑,我為你準備好了

下面針對零基礎學Python的初學者說一說入門的學習路徑。

1、建立開發環境


建立開發環境非常重要,。做任何開發,首先就是要把這個環境準備好,之後就可以去做各種嘗試,嘗試過程中的話就能逐漸建立信心。初學者往往在環境配置中被各種預想不到的問題弄得很沮喪。

目前來說,使用Python的工作環境有如下幾種:

命令行交互環境:這是Python原生支持的工作環境,直接在命令行與Python進行交互。

文本編輯環境:是集成開發環境的一種精簡版,以Sublime-Text這類文本編輯器為代表。這種環境僅保留幫助你編寫代碼的核心組件,主要是提供給單人工作的場景使用,在沒有太多分工協作的前提下專注於代碼的編寫。

集成開發環境:如果想要使用Python編寫較大的工程項目,特別是在很多人協同工作的情況下,可以考慮使用PyCharm這樣的大型集成開發環境(IDE)。在這種環境下,IDE會將許多開發中需要的功能集成在一起,便於我們的使用。

交互研究環境:在這種交互研究環境下,每次的代碼都相當於是在之前代碼上的增量,從而保證只有發生變化的部分被重新執行,無需對不發生改變的部分重新計算。特別適用於研究人員快速驗證模型的正確性

初學者一般使用文本編輯環境就可以,當然也要了解如何在命令行中輸入代碼與Python進行交互。

2、瞭解編程語言基礎

有了工作環境後,我們就可以開始編寫和執行Python程序了。

Python這類腳本程序其實就像是一段“電影腳本”,按照從前往後的順序規定了一系列的動作,指揮著你電腦的CPU、硬盤、操作系統等部件幹這幹那。所以為了讓電腦能夠看懂,你編寫的這段“電影腳本”需要按照電腦所使用的語言進行編寫。例如print("hello world!")這樣一句話就會讓電腦調用一系列部件,最後在屏幕上輸出它對世界的問好;而a=3+5這樣一句話就會讓電腦計算3+5的答案,然後將答案放入一個名字為a的“盒子”當中。

所以初期你學習的是一些編寫“電影腳本”的語法規則,在這個過程中你會逐漸瞭解到編程語言的一些基本元素:

· 變量:變量就像是一個個存放了東西的盒子,用來保存一些臨時的值或者那些需要多次使用的值。變量有不同的基本類型,比如數字和字符串類型。

· 運算符:變量顧名思義,是可以不斷變化的,而變化的手段就是對變量就行操作(或者稱之為運算)。運算符是Python語言中一種直觀的數據操作方式,它可以對特定的一個或者多個變量或常量進行運算並返回結果。比如最簡單的加減乘除在Python語言中都有對應的運算符。

· 條件控制:在Python程序執行的過程中,我們需要根據當前的狀況來判斷接下來讓電腦做什麼,這就是條件控制語句,它會將“劇本”拆分成兩部分,在一種情況下執行第一部分,在剩下的情況執行第二部分。

· 循環控制:有一些腳本我們有時候可能要重複執行,或者它們有很大程度的公共部分(例如輸出1到100之間的100個整數,每次輸出就非常相似),我們就會使用循環控制語句。我們也可以中斷一次循環(continue)或者跳出循環(break)。

使用這些元素,我們就能完成大部分的計算了,你可以編寫一些簡單的程序,也可以在命令行中通過這些語言元素對Python虛擬機發號施令啦。當然,如果你學習過另外一門語言,這部分基礎是信手拈來的,那麼對你來說更多是熟悉和適應Python的語法風格。

3、掌握數據結構基礎

為了能夠完成更復雜的計算場景,Python提供了若干種內置的數據結構。所謂數據結構,你可以認為一組變量以某個特定的方式組織在一起,而不僅僅是單個獨立的變量。通過特定的組織方式,在處理某些運算時能夠能夠大大提高編程的效率。數據結構是計算機專業的一門必修專業課,更高級的數據結構及其內部實現方式你需要專門學習,不過Python的數據結構可以是一個非常好的學習起點。

Python內置的數據結構包含如下四種:

列表:列表(list)在Python的語法中是一種有序且長度可變的集合,可以隨時對其中的元素進行添加、刪除和修改。我們往往可以用列表來表示各種隊列、數組這種“有序”的序列。

元組:元組(tuple)和列表基本相同,都是有序的序列,其區別在於元組內的元素一旦定義,就不能夠再進行修改,只能夠通過下標對元組內部的元素進行訪問。使用元組,我們可以將一些數據有機的組合在一起進行表示。

·集合:集合(Set)作為一個複雜數據類型,如其在數學中的定義一樣,在Python中也是起到表示一系列值的“集合”的作用。使用集合,我們可以快速的判斷某個元素的存在性。

字典:字典(Dict)在數學中並沒有對應的定義,它更像是從生活中的字典借鑑而來的一種數據類型。例如手機通訊錄就是一個典型的可以使用字典來存儲的數據集。依靠字典,我們可以很方便的根據某個元素ID(例如編號、名字等)來查找到它。

這四種數據結構能夠覆蓋大部分我們所工作的場景,天碼營的課程提高了更多實例,熟練掌握這四種數據結構,你會發現編程效率會大大提高。

4、掌握函數的基本概念

在實際編寫程序的過程中,某些代碼可能會反覆執行多次。而這些代碼除了變量不同外,沒有任何的區別。這些代碼實際上類似於數學表達式中的函數f(x),當我們給x賦值時,就會得到對應的結果。在Python中也提供了這樣的特性,同樣稱之為“函數”。

函數將需要反覆使用的代碼進行模塊化,從而減少了代碼的重複,同時還增加了可讀性和可維護性。當需要修改時,只要改變定義內的代碼,就可以完成對每一次執行的修改。

定義函數的語法其實很簡單,關於函數重點需要掌握的是函數的參數定義。Python函數的參數定義(即如何定義函數的輸入)非常有特色,比如:

默認參數

可變參數

關鍵字參數

命名關鍵字參數

本質上這些特性使得函數調用者進行傳參時會更加得心應手。

5、面向對象編程

面向對象是一種非常符合人類思維的編程方法,因為現實世界就是由對象和對象之間的交互來構成的,所以我們其實很容易將現實世界映射到軟件開發中。舉個例子,一輛汽車、一篇博客、一個人,對應到軟件系統中都是一個對象;而對象具有自己的狀態和行為。

面向對象:類的定義

你需要了解一個面向對象編程的核心概念:“類”。類描述一類對象的狀態和行為的模板。可以把類想象成一個汽車設計圖,根據這個汽車設計圖生產出來的每一輛汽車就是類的一個實例,這些實例就稱之為對象。

狀態和行為,對應到Python語言中,就是一個類和對象的屬性和方法(類中的函數一般稱之為方法),屬性方法可以進行外部的訪問控制,從實現“封裝”這一面向對象特性。

所以對應到Python這門編程語言,首先你需要了解如何定義類,以及定義類的屬性和方法。

面向對象:理解繼承和多態

在“封裝”的基礎上,面向對象編程還有“繼承”和“多態”的特型。假如我們有一個動物(Animal)類,它包含有動物最基本的一些特型。現在我們要新寫一個犬(Dog)類,顯然我們知道犬也是動物的一種,因此它也肯定包含動物類的全部特性。因此我們利用“繼承”的特型,並不需要將動物類的所有代碼在犬類中重寫一遍,而是在創建犬類時繼承動物類。此時我們將動物類稱之為犬類的父類,犬類稱為動物類的子類。而“多態”的特性使得犬類在繼承動物類的方法時,也可以重寫這寫方法,使得它更有符合犬的特徵。

面向對象編程方法的在大型項目中被廣泛的應用。現在人們談論到面向對象編程時,不僅僅是一種程序設計方法,更多意義上是一種程序開發方法,瞭解面向對象編程時每個程序員必須要做的事。

6、學習函數式編程

也許你還覺得函數式編程很陌生,但許多的函數式編程風格已經漸漸開始流行。什麼叫函數式編程呢?事實上只要語言將函數作為一等公民(或者藉助工具達到類似效果) 就可以支持函數式編程。而將函數作為一等公民意味著函數可以像變量一樣傳參、賦值和返回。函數式編程的書寫方式使得代碼編寫的效率更加高,極大地提高生產效率。

你需要了解高階函數、匿名函數(lambda表達式),閉包等一些基本概念;瞭解函數式編程最好的方式是從下面幾個非常實用的高階函數開始。

函數式編程:瞭解高階函數的用法

函數式編程:

map

map多用於對列表數據的處理,它將一個方法依次對序列的每一個元素使用,比如:

def f(x):
return x*x
map(f, [1,2,3])

該代碼就會得到[f(1),f(2),f(3)],所以結果是[1,4,9]

reduce

reduce利用遞歸的思想,會將前一次的計算結果作為第一個參數,將下一個元素作為第二個參數進行計算:

def f(x1,x2):
return x1*x2
reduce(f, [1,2,3,4])

實際上等價於f(f(f(1,2),3),4),結果也就是24了

filter

filter會根據傳入函數對象f的計算結果對原序列進行篩選,對於一個元素x, 留下f(x)為真(True)的元素,刪除f(x)為假(False)的元素

sort

sort會根據函數的返回結果來判定兩個數的大小關係,並依次作為依據對序列內元素進行排序,比如:

def compare(x, y):
return y - x #逆序
myList.sort(compare)

最後得到的myList就會是從大到小排列的序列。

函數式編程:lambda表達式

lambda表達式就是匿名函數,它直接實現了函數,而不需要定義函數名。比如上面排序的代碼,我們就可以這樣實現:

myList.sort(lambda x,y: y-x)

通過lambda表達式直接定義使用,這樣就不需要去額外定義一個compare方法,代碼會更加簡潔。

函數式編程:閉包

在一般的函數中,返回值都是諸如數字、字符串之類的對象。但實際上函數的返回值可以是一個函數。返回的函數不僅僅包含有其自身的代碼,也同時包含了調用時的參數,並且多次返回的函數之間互不干擾,這一特性被稱為“閉包(closure)”。

函數式編程的學習並不複雜,學會使用函數式編程往往能夠起到事半功倍的效果。能夠熟練的使用Python函數式編程也是每個Python程序員應該掌握的能力。

7、掌握更多標準庫中的模塊

我們都說Python簡單好用,方便易學,很大部分要歸功於Python提供的功能強大的標準庫。標準庫意味著,Python已經幫我們封裝好了很多底層功能,我們拿來即用。因此,標準庫中的一些基礎模塊我們需要掌握。

輸入輸出:最為“基礎”的模塊便是對輸入輸出的編程,我們都知道可以通過input(),output()來完成對數據的輸入和輸出。但是如果想要讀取的是圖片?二進制文件?甚至於各類奇怪格式的文件。這種時候,我們就需要通過IO編程來完成對這一過程的定製化。

異常處理:我們編寫的程序也可能產生許多錯誤,甚至有些錯誤是我們在設計時就預計產生的。但是我們不能讓這些錯誤影響我們程序的運行。例如,使用Python爬蟲獲取1000個網頁,如果在開始爬第一個網頁的時候程序就出錯了,那麼一般情況下我們的程序就會自動終止,從而後續的網頁也都不會爬取。但是我們可以使用異常處理,來“catch”住這些錯誤,將沒有成功獲取的網頁記錄下來,然後繼續處理後續的網頁。基於這樣的方式,我們就可以安心的讓程序跑上一個晚上,然後在第二天回來處理那些產生了異常的網頁。

多進程與多線程:我們還可以通過多進程和多線程使得我們的Python程序擁有可以並行處理諸多複雜事物的功能。並行是一種能夠充分利用計算機計算核心(CPU/GPU)性能的方法。在目前單核計算能力增長逐漸放緩的現在,並行是少有的能夠大大增加計算速度的技術了。想象一下,使用單核CPU訓練一次模型如果需要20小時,通過多核GPU(GPU內部本身就是並行的)就很有可能將這個時間縮短到1小時內。這會大大增加對模型參數的調整效率。

Python標準庫還有很多內容,這裡列的肯定是不全的;實際上隨著Python版本的逐漸更新,還有更多的高級特性會被逐漸加入這門語言當中。毋庸置疑的,隨著數據科學的發展,Python的使用前景也將越來越好。而在這個過程中,保持對Python的熟悉和了解,會是你緊跟技術潮流的最佳助力。

如果你也剛好是零基礎學Python,這篇文章看到這裡也算是有收穫了!

相關推薦

推薦中...