我的python学习之路_我的Python学习之路
簡單算來,接觸Python有些時日了。想要做個簡單的總結,算是為想要入門Python的童鞋做一個簡單的介紹吧。
什么是Python
Python,是一種面向對象、直譯式的計算機程序語言。它包含了一組功能完備的標準庫,能夠輕松完成很多常見的任務。它的語法簡單,與其它大多數程序設計語言使用大括號不一樣,它使用縮進來定義語句塊。
與Scheme、Ruby、Perl、Tcl等動態語言一樣,Python具備垃圾回收功能,能夠自動管理內存使用。它經常被當作腳本語言用于處理系統管理任務和網絡程序編寫,然而它也非常適合完成各種高級任務。Python虛擬機本身幾乎可以在所有的作業系統中運行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具可以將Python源代碼轉換成可以脫離Python解釋器運行的程序。
Python的官方解釋器是CPython,該解釋器用C語言編寫,是一個由社區驅動的自由軟件,目前由Python軟件基金會管理。
Python支持命令式程序設計、面向對象程序設計、函數式編程、面向側面的程序設計、泛型編程多種編程范式。
---引用自中文維基百科
簡而言之,Python是一門語法簡單,功能強大,有豐富第三方支持的動態高級編程語言。在最新的TIOBE編程語言排行榜上,Python僅位于Java,C++,C,C#之后,排名高居第五,且排名一直在上升(1996年24位,2006年6位,2016年10月排名升至第5位)。在Google Trends的搜索排名上,Python也和Java,C等傳統意義上的主流語言越來越接近。
為什么選擇Python
在我看來,至少有以下原因使我們選擇Python:
語法簡單,相比去大多數語言用花括號區分語句塊,Python選擇用縮進來作為語意單元的分隔,由于豐富的內建數據結構和強大的第三方擴展庫,Python可以寫出比較簡潔的代碼(至少在代碼量上會優于大多數語言)。
下面以快速排序作為一個例子來簡單比較一個對于同一個問題,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
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>
voidquickSort(T[]targetArr,intstart,intend)
{
inti=start,j=end;
Tkey=targetArr[start];
while(i
{
while(j>i&&targetArr[j].compareTo(key)>=0)
{
j--;
}
if(i
{
targetArr[i]=targetArr[j];
i++;
}
while(i
{
i++;
}
if(i
{
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
greater=qsort([x for x in seq[1:] if x>=pivot])
return lesser+[pivot]+greater
至少在上面這個例子當中,Python在簡潔上還是有一定的優勢的。簡潔和縮進帶來的直接優勢就是代碼的可讀性提高(這也是我要說的Python的第二點優勢),Python里有很多開源框架的代碼量都不大,這為大多數人通過源代碼來學習帶來了方便。
由于python的設計哲學就是“以最優雅,明確,簡單的方法解決問題”,所以大多數Python代碼的實現都是簡單易讀,也就是常說的Pythonic寫法。
3.廣闊的應用范圍
Web后端 目前常見的Python web后端框架包括Django,flask,Pyramid,web.py,Tornado等,目前使用Python作為后臺開發語言的網站有Gmail,YouTube,Reddit,Spotify,DropBox等,國內的網站有知乎,豆瓣,餓了么,Bilibili等
自動化運維 也就是時下比較火的DevOps的概念,相關的工具庫包括:psutil,Ipy,dnspython,pexpect,paramiko,fabric等
數據分析師 大數據時代,不會做一點數據分析怎么說的過去?python本身就可以很方便的對excel進行讀寫(xrlt),除此之外,python還有很多強大的數據處理庫,比如Scipy,Numpy,pandas,Dato GraphLab等等。在數據處理領域,python的地位和R不相上下。
網絡爬蟲 從基礎款的urllib,request,到selenium,再到比較成熟的Scrapy,pySpider Python在爬蟲上給了很多可供選擇的方案
我的Python學習資料
說了這么多Python的好處,接下來分享一點Python的學習資料
當然,最好的Python學習材料就是Python文檔和PEP
相應的,如果你想要學習某個python擴展第三方庫,它的官方文檔永遠應該是你的第一選擇學習資料,只要在搜索引擎上打上對應庫的名字,一般都能找到它的documents。
教材:
MOOC:
最后,有幾個程序員應該知道的網站
轉載請注明原地址和出處
總結
以上是生活随笔為你收集整理的我的python学习之路_我的Python学习之路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3元类_3.python元类
- 下一篇: 求实数的绝对值。_例谈六种有关绝对值问题