本文針對零基礎(chǔ)讀者,不需要具備任何編程基礎(chǔ),通過本文可以對Python有一個比較整體的了解,便于以后的深入學(xué)習(xí)打下良好基礎(chǔ)
本文試圖概述Python編程語言的所有關(guān)鍵點,并專注于絕對需要理解的最重要的主題。完全零基礎(chǔ),你不需要具備任何先前的編程知識,并且可以非常快速地掌握所有必需的概念。
好,接下來我們開始。
1. Python簡介
Python是一種解釋型語言: 這意味著開發(fā)過程中沒有了編譯這個環(huán)節(jié)。類似于PHP和Perl語言
Python是交互式語言:你可以在一個Python提示符 >>> 后直接執(zhí)行代碼
Python是面向?qū)ο笳Z言: 這意味著Python支持面向?qū)ο蟮娘L(fēng)格或代碼封裝在對象的編程技術(shù)
Python是初學(xué)者的語言:Python對初級程序員而言,是一種偉大的語言,它支持廣泛的應(yīng)用程序開發(fā),從簡單的文字處理到WWW瀏覽器再到游戲
2. 變量、數(shù)據(jù)類型及作用域
變量來源于數(shù)學(xué),是計算機語言中能儲存計算結(jié)果或能表示值抽象概念。變量可以通過變量名訪問。在指令式語言中,變量通常是可變的。而在Python中,變量等同于names。
聲明變量和賦值(Python中也稱作binding,相比賦值,綁定這個詞可能更形象)操作:
myFirstVariable=1mySecondVariable=2myFirstVariable = "Hello You"
Python支持?jǐn)?shù)據(jù)類型包括數(shù)字、字符串、集合、列表、元組、字典。數(shù)字支持整數(shù)、小數(shù)、浮點。長整型會有一個L的后綴,比如9999999999999L。字符串是被引號(單雙均可)包圍由數(shù)字、字母、下劃線組成的一串字符。
程序創(chuàng)建、訪問、改變一個變量時,都是在一個保存該變量的空間內(nèi)進(jìn)行,這個空間為命名空間,即作用域。Python作用域是靜態(tài)的,變量被賦值、創(chuàng)建的位置決定了其被訪問的范圍,即變量作用域由其所在位置決定。Python的作用域一共有4種,分別是:
L (Local) 局部作用域
E (Enclosing) 閉包函數(shù)外的函數(shù)中
G (Global) 全局作用域
B (Built-in) 內(nèi)建作用域
以L –> E –> G –>B 的規(guī)則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內(nèi)建中找。
3. 運算符
Python語言支持以下類型的運算符:
算術(shù)運算符:+;-;*;/;%(取模 - 返回除法的余數(shù));**(冪 - 返回x的y次冪);//(取整除 - 返回商的整數(shù)部分,向下取整)
比較(關(guān)系)運算符:==(等于 - 比較對象是否相等);!=(不等于 - 比較兩個對象是否不相等);<>(不等于 - 比較兩個對象是否不相等);>(大于 - 返回x是否大于y);<(小于 - 返回x是否小于y);>=(大于等于- 返回x是否大于等于y);<=(小于等于 -返回x是否小于等于y)
賦值運算符:=(簡單的賦值運算符);+=(加法賦值運算符);-=(減法賦值運算符);*=(乘法賦值運算符);/=(除法賦值運算符);%=(取模賦值運算符);**=(冪賦值運算符);//=(取整除賦值運算符)
位運算符:&(按位與運算符);|(按位或運算符);^(按位異或運算符);~(按位取反運算符);<<(左移動運算符);>>(右移動運算符)
邏輯運算符:and(布爾"與");or(布爾"或");not(布爾"非")
成員運算符:in(如果在指定的序列中找到值返回 True,否則返回 False);not in(如果在指定的序列中沒有找到值返回 True,否則返回 False)
身份運算符:is(判斷兩個標(biāo)識符是不是引用自一個對象);is not(判斷兩個標(biāo)識符是不是引用自不同對象)
4. 注釋
單行注釋:
#this is a single line comment
多行注釋:
```thisisamultilinecomment```5. Pickling
將對象轉(zhuǎn)換為字符串并將字符串轉(zhuǎn)儲到文件中稱為酸洗。 反過來被稱為unpickling。
6. 函數(shù)
函數(shù)是組織好的,可重復(fù)使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。
定義新函數(shù):
defmy_new_function(): print('this is my new function')
函數(shù)調(diào)用
my_new_function()
查看字符串長度
len('hello')prints 57. 參數(shù)
定義函數(shù)的時候,把參數(shù)的名字和位置確定下來,函數(shù)的接口定義就完成了。函數(shù)的調(diào)用者只需知道如何傳遞正確的參數(shù),以及函數(shù)將返回什么樣的值即可。
Python參數(shù)包括:位置參數(shù);默認(rèn)參數(shù);可變參數(shù);命名關(guān)鍵字參數(shù);參數(shù)組合。
8. 模塊
Python 模塊(Module),是一個 Python 文件,以 .py 結(jié)尾,包含了 Python 對象定義和Python語句。模塊讓你能夠有邏輯地組織你的 Python 代碼段。把相關(guān)的代碼分配到一個模塊里能讓你的代碼更好用,更易懂。模塊能定義函數(shù),類和變量,模塊里也能包含可執(zhí)行的代碼。
導(dǎo)入模塊:
import module1[, module2[,... moduleN]]
調(diào)用模塊中的函數(shù):
module1.function1
從某個模塊中導(dǎo)入一個指定的部分到當(dāng)前命名空間中:
from modname import name1[, name2[, ... nameN]]
把一個模塊的所有內(nèi)容全都導(dǎo)入到當(dāng)前的命名空間:
from modname import *9. 包
模塊與包是任何大型程序的核心,就連Python安裝程序本身也是一個包。包是一個有層次的文件目錄結(jié)構(gòu),它定義了由n個模塊或n個子包組成的python應(yīng)用程序執(zhí)行環(huán)境,包含__init__.py文件和其它模塊或子包。
從包里調(diào)用模塊:
from packageroot.packagefolder.mod import my_object
PIP是Python的包管理器,未來你將會頻繁的用到他:
pip install package_name10. 條件語句
Python條件語句是通過一條或多條語句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊,也就是連吃瓜群眾都知道的if/else語句:
ifa=b:print'aisb'elifab:print'aisgreaterthanb'else: print 'a is different'
條件語句是可以嵌套的:
else:ifa=2:print'withinifofelse'else: print 'within else of else'
11. 循環(huán)語句
循環(huán)語句允許我們執(zhí)行一個語句或語句組多次,一般包含兩種類型:While循環(huán)和For循環(huán)。
While循環(huán),一直循環(huán)知道滿足某個條件終止:
while(input0):?do_something(input) input = input-1
While循環(huán)嵌套:
whileexpression:whileexpression:statement(s) statement(s)
For循環(huán),一直循環(huán)知道次數(shù)用盡:
foriinrange(0,10)print i
For循環(huán)嵌套語法:
foriterating_varinsequence:foriterating_varinsequence:statements(s) statements(s)
循環(huán)控制語句可以更改語句執(zhí)行的順序。Python支持以下循環(huán)控制語句:
break:在語句塊執(zhí)行過程中終止循環(huán),并且跳出整個循環(huán)
continue:在語句塊執(zhí)行過程中終止當(dāng)前循環(huán),跳出該次循環(huán),執(zhí)行下一次循環(huán)
pass:pass是空語句,是為了保持程序結(jié)構(gòu)的完整性
break語法:
foriinrange(0,10):if(i==5): break
whileTrue:x=get_value()if(x==1): break12. 遞歸
在函數(shù)內(nèi)部,可以調(diào)用其他函數(shù)。如果一個函數(shù)在內(nèi)部調(diào)用自身本身,這個函數(shù)就是遞歸函數(shù)。
舉個例子,我們來計算階乘n! = 1 x 2 x 3 x ... x n,用函數(shù)factorial(n)表示,可以看出:
factorial(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = factorial(n-1) x n
所以,factorial(n)可以表示為n x fact(n-1),只有n=1時需要特殊處理。
于是,factorial(n)用遞歸的方式寫出來就是:
deffactorial(n):ifn==0:return1else: return n * factorial(n-1)13. 框架與棧調(diào)用
Python代碼載入框架,框架位于棧中。
函數(shù)與參數(shù)和變量一起載入框架
框架會按照正確的執(zhí)行順序依次載入棧中
棧中列出函數(shù)的執(zhí)行步驟,在函數(shù)外聲明的變量存儲在main中
最后入棧的框架將最先執(zhí)行
如果發(fā)生錯誤,可以使用回溯來獲取函數(shù)表
14、列表和庫
列表
列表是可以保存任何數(shù)據(jù)類型的值序列的數(shù)據(jù)結(jié)構(gòu)。它們是可變的(可更新的)。
列表由整數(shù)索引。
字典
字典是編程世界中最重要的數(shù)據(jù)結(jié)構(gòu)之一。它的功能是存儲鍵/值對對象,可以優(yōu)化數(shù)據(jù)檢索功能。
15.編譯和鏈接
這些特征可用于使用以另一種語言編寫的文件,例如C或C ++等
將代碼寫入文件后,可以將文件放在Modules目錄中。
在Setup.local文件中添加一行非常重要,以確??梢约虞d新創(chuàng)建的文件。
16. 迭代器
迭代器可以遍歷集合,所有迭代器都包含__iter __()和__next __()函數(shù)
只需在列表,字典,字符串或集合上執(zhí)行iter(x)即可。
如果我們在集合中有大量項目,而且不打算一次加載內(nèi)存中的所有文件,那么迭代器就是很有用的。一些通用迭代器讓開發(fā)人員能夠?qū)崿F(xiàn)函數(shù)式編程語言實例。
17.面向?qū)ο蟮脑O(shè)計:類
Python允許創(chuàng)建自定義類型。由用戶定義的類型稱為類。這些類可以具有自定義屬性和函數(shù)。
面向?qū)ο蟮脑O(shè)計允許程序員將其業(yè)務(wù)模型定義為具有所需屬性和功能的對象。
屬性也可以引用另一個對象。
Python類可以引用其他類。
Python支持封裝,即實例函數(shù)和變量。
Python支持繼承。
18.面向?qū)ο蟮脑O(shè)計:繼承
Python支持對象的繼承。因此,對象可以繼承其父級對象的函數(shù)和屬性。
繼承的類可以在其函數(shù)中包含不同的邏輯。
如果一個類ParentClass有兩個子類:SubClass1,SubClass2
因此,兩個子類都將包含函數(shù)my_function()。
繼承可以鼓勵代碼重用和維護(hù)。
一些常見問題指引
我為什么要使用Python?
簡單的編碼和學(xué)習(xí)
面向?qū)ο缶幊陶Z言
偉大的分析和ML包
更快地開發(fā)并將我的解決方案推向市場
提供內(nèi)置內(nèi)存管理功能
提供巨大的社區(qū)支持和應(yīng)用程序
無需編譯,因為它是一種解釋性語言
動態(tài)輸入 - 無需聲明變量
如何讓Python快速運行?
Python是一種高級語言,不適合訪問系統(tǒng)級程序或硬件。
此外,Python不適用于跨平臺應(yīng)用程序。事實上,Python是一種動態(tài)類型的解釋語言,與低級語言相比,它的優(yōu)化和運行速度較慢。
實現(xiàn)基于C語言的擴展。
使用Spark或Hadoop創(chuàng)建多進(jìn)程
利用Cython,Numba和PyPy來加速Python代碼,或用C語言編寫代碼,再像在NumPy中那樣在Python中公開
現(xiàn)在有哪些常用的IDE?
Spyder,PyCharm。另外,使用各種筆記本電腦, Jupyter
有哪些頂級Python框架和包?
Python有大量必備的包:
PyUnit(單元測試),PyDoc(文檔),SciPy(algebera和數(shù)字),Pandas(數(shù)據(jù)管理),Sci-Kit學(xué)習(xí)(ML和數(shù)據(jù)科學(xué)),Tensorflow(AI),Numpy(數(shù)組和數(shù)字),BeautifulSoap(web)頁面報廢),F(xiàn)lask(微框架),Pyramid(企業(yè)應(yīng)用程序),Django(UI MVVM),urllib(網(wǎng)頁抓?。?,Tkinter(GUI),mock(模擬庫),PyChecker(bug檢測器),Pylint(模塊代碼分析))
Python和R可以合并嗎?
R中編寫了大量豐富的統(tǒng)計庫
可以使用Rpy2 python包或在Juputer中使用beaker筆記本或IR內(nèi)核在Python中執(zhí)行R代碼。
有沒有辦法在運行Python之前捕獲錯誤?
在運行代碼之前,我們可以使用PyChecker和PyLink來捕獲錯誤。
-
編程語言
+關(guān)注
關(guān)注
10文章
1949瀏覽量
34869 -
python
+關(guān)注
關(guān)注
56文章
4804瀏覽量
84910
原文標(biāo)題:無需編程基礎(chǔ),Python從入門到進(jìn)階大法
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論