簡單算來,接觸Python有些時日了拯辙。想要做個簡單的總結(jié)郭变,算是為想要入門Python的童鞋做一個簡單的介紹吧。
什么是Python
Python涯保,是一種面向?qū)ο?/a>诉濒、直譯式的計算機程序語言。它包含了一組功能完備的標(biāo)準(zhǔn)庫夕春,能夠輕松完成很多常見的任務(wù)未荒。它的語法簡單,與其它大多數(shù)程序設(shè)計語言使用大括號不一樣及志,它使用縮進來定義語句塊片排。
與Scheme、Ruby速侈、Perl划纽、Tcl等動態(tài)語言一樣,Python具備垃圾回收功能锌畸,能夠自動管理內(nèi)存使用勇劣。它經(jīng)常被當(dāng)作腳本語言用于處理系統(tǒng)管理任務(wù)和網(wǎng)絡(luò)程序編寫,然而它也非常適合完成各種高級任務(wù)。Python虛擬機本身幾乎可以在所有的作業(yè)系統(tǒng)中運行比默。使用一些諸如py2exe幻捏、PyPy、PyInstaller之類的工具可以將Python源代碼轉(zhuǎn)換成可以脫離Python解釋器運行的程序。
Python的官方解釋器是CPython,該解釋器用C語言編寫口锭,是一個由社區(qū)驅(qū)動的自由軟件完沪,目前由Python軟件基金會管理绽乔。
Python支持命令式程序設(shè)計、面向?qū)ο蟪绦蛟O(shè)計、函數(shù)式編程、面向側(cè)面的程序設(shè)計沛善、泛型編程多種編程范式。
---引用自中文維基百科
簡而言之塞祈,Python是一門語法簡單金刁,功能強大,有豐富第三方支持的動態(tài)高級編程語言议薪。在最新的TIOBE編程語言排行榜上尤蛮,Python僅位于Java,C++斯议,C产捞,C#之后,排名高居第五哼御,且排名一直在上升(1996年24位坯临,2006年6位,2016年10月排名升至第5位)艇搀。在Google Trends的搜索排名上尿扯,Python也和Java求晶,C等傳統(tǒng)意義上的主流語言越來越接近焰雕。
為什么選擇Python
在我看來,至少有以下原因使我們選擇Python:
- 語法簡單芳杏,相比去大多數(shù)語言用花括號區(qū)分語句塊矩屁,Python選擇用縮進來作為語意單元的分隔,由于豐富的內(nèi)建數(shù)據(jù)結(jié)構(gòu)和強大的第三方擴展庫爵赵,Python可以寫出比較簡潔的代碼(至少在代碼量上會優(yōu)于大多數(shù)語言)吝秕。
下面以快速排序作為一個例子來簡單比較一個對于同一個問題,Python和Java空幻,C烁峭,C++之間的代碼量差距。
C版本
void sort(int *a, int left, int right)
{
if(left >= right)
{
return ;
}
int i = left;
int j = right;
int key = a[left];
while(i < j)
{
while(i < j && key <= a[j])
{
j--;
}
a[i] = a[j];
while(i < j && key >= a[i])
{
i++;
}
a[j] = a[i];
}
a[i] = key;
sort(a, left, i - 1);
sort(a, i + 1, right);
}
C++版本
include <iostream>
using namespace std;
void Qsort(int a[], int low, int high)
{
if(low >= high)
{
return;
}
int first = low;
int last = high;
int key = a[first];
while(first < last)
{
while(first < last && a[last] >= key)
{
--last;
}
a[first] = a[last];
while(first < last && a[first] <= key)
{
++first;
}
a[last] = a[first];
}
a[first] = key;
Qsort(a, low, first-1);
Qsort(a, first+1, high);
}
int main()
{
int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24};
Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);
for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
cout << a[i] << "";
}
return 0;
}
Java版本
private<TextendsComparable<?superT>>
voidquickSort(T[]targetArr,intstart,intend)
{
inti=start,j=end;
Tkey=targetArr[start];
while(i<j)
{
while(j>i&&targetArr[j].compareTo(key)>=0)
{
j--;
}
if(i<j)
{
targetArr[i]=targetArr[j];
i++;
}
while(i<j&&targetArr[i].compareTo(key)<=0)
{
i++;
}
if(i<j)
{
targetArr[j]=targetArr[i];
j--;
}
}
targetArr[i]=key;
this.quickSort(targetArr,start,i-1);
this.quickSort(targetArr,j+1,end);
}
最后,來看看Python版本
def qsort(seq):
if seq==[]:
return []
else:
pivot=seq[0]
lesser=qsort([x for x in seq[1:] if x<pivot])
greater=qsort([x for x in seq[1:] if x>=pivot])
return lesser+[pivot]+greater
至少在上面這個例子當(dāng)中约郁,Python在簡潔上還是有一定的優(yōu)勢的缩挑。簡潔和縮進帶來的直接優(yōu)勢就是代碼的可讀性提高(這也是我要說的Python的第二點優(yōu)勢),Python里有很多開源框架的代碼量都不大鬓梅,這為大多數(shù)人通過源代碼來學(xué)習(xí)帶來了方便供置。
- 由于python的設(shè)計哲學(xué)就是“以最優(yōu)雅,明確绽快,簡單的方法解決問題”芥丧,所以大多數(shù)Python代碼的實現(xiàn)都是簡單易讀,也就是常說的Pythonic寫法坊罢。
3.廣闊的應(yīng)用范圍
Web后端 目前常見的Python web后端框架包括Django续担,flask,Pyramid艘绍,web.py赤拒,Tornado等,目前使用Python作為后臺開發(fā)語言的網(wǎng)站有Gmail诱鞠,YouTube挎挖,Reddit,Spotify航夺,DropBox等蕉朵,國內(nèi)的網(wǎng)站有知乎,豆瓣阳掐,餓了么始衅,Bilibili等
自動化運維 也就是時下比較火的DevOps的概念,相關(guān)的工具庫包括:psutil缭保,Ipy汛闸,dnspython,pexpect艺骂,paramiko诸老,fabric等
數(shù)據(jù)分析師 大數(shù)據(jù)時代,不會做一點數(shù)據(jù)分析怎么說的過去钳恕?python本身就可以很方便的對excel進行讀寫(xrlt)别伏,除此之外,python還有很多強大的數(shù)據(jù)處理庫忧额,比如Scipy厘肮,Numpy,pandas睦番,Dato GraphLab等等类茂。在數(shù)據(jù)處理領(lǐng)域,python的地位和R不相上下。
網(wǎng)絡(luò)爬蟲 從基礎(chǔ)款的urllib巩检,request恬涧,到selenium,再到比較成熟的Scrapy碴巾,pySpider Python在爬蟲上給了很多可供選擇的方案
我的Python學(xué)習(xí)資料
說了這么多Python的好處溯捆,接下來分享一點Python的學(xué)習(xí)資料
當(dāng)然,最好的Python學(xué)習(xí)材料就是Python文檔和PEP
相應(yīng)的厦瓢,如果你想要學(xué)習(xí)某個python擴展第三方庫提揍,它的官方文檔永遠應(yīng)該是你的第一選擇學(xué)習(xí)資料,只要在搜索引擎上打上對應(yīng)庫的名字煮仇,一般都能找到它的documents劳跃。
教材:
MOOC:
哈佛大學(xué)課程ph56x
伯克利大學(xué)的pySpark課程
萊斯大學(xué)Python課程
密歇根大學(xué)零基礎(chǔ)Python系列, 以及Python 數(shù)據(jù)科學(xué)系列
最后浙垫,有幾個程序員應(yīng)該知道的網(wǎng)站
轉(zhuǎn)載請注明原地址和出處