前輩說先學會了這些Python知識點,再談學習人工智慧、機器學習

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

隨著前面阿法爾go打敗了圍棋大師,讓人工智能、機器學習大火了一把,然後學習人工智能和機器學習前提也需要掌握一定的Python知識點,那麼學習這些前,我們究竟應該先掌握哪些Python知識點呢?

第一階段:python基礎

python基本數據結構

1、list: a[1,2,3]

2、tuple: a(1,2,3) 一旦初始化,就不能改變內容

3、dict:{'a':1,'b':2,'c':3} key:value (dict中的key值不能改變)

4、set: a([1,2,3]) (初始化的時候,傳入的是list,set中的key也不能重複,set可以看做是數學意義上的無序和無重複元素的集合)

python的for循環

1)for … in 的循環,一次把list或者tuple中的元素迭代出來

2)for x in …的循環,把每個元素帶入變量x中進行計算

python的函數參數

默認參數:

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

必選參數在前,默認參數在後。且默認參數必須指向不變對象(不能是list)

2)可變參數:(傳入的參數的個數是可變的)

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

3)關鍵字參數:

python的列表生成式

python的列表生成式有點過於強大,能夠花式生成各種符合要求的列表,包括全排列,if判斷都行。由於內容有點多,這裡直接貼一個鏈接python的列表生成式

這裡還有一個生成器的概念,現在並不是很懂,還是先把鏈接放這裡,以後用到了看不懂再回過頭來看這個。

生成器

python的函數

1)高階函數:python當中的函數也可以複製給變量

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

如果一個函數以函數為參變量,那麼這個函數稱為高階函數

python當中的map和reduce,還有filter

這兩個都是高階函數,接受兩個參數,第一個參數是函數變量,第二個參數是一個list。

map(f,nums)意思是將函數f作用於nums這個list中的每一個元素

reduce(f,nums)的作用類似於歸約

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

同為高階函數的sorted

sorted要單獨拿出來說,因為它的輸入和前面所描述的輸入正好相反

sorted(nums,func),sorted可以對list直接排序,但是默認升序,我們可以自定義排序函數來實現sorted函數的任意排序功能

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

將函數作為返回值實現python閉包

這裡也沒太弄明白用處在哪裡,先貼鏈接,以後遇到了回過頭來再看

python閉包

python中的正則表達式

python中的正則表達式lamda也叫做匿名函數

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

使用匿名函數的好處是因為匿名函數沒有名字,不用擔心函數名產生的衝突問題

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

python模塊概念

當python文件被當作為模塊被其他模塊引用時,並不會直接執行test函數,if判斷將失敗。因此這種if測試可以讓一個模塊通過命令行運行時執行一些額外的代碼,最常見的就是運行測試

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

2)python,實現函數和變量的私有保護,可以通過_前綴來實現

,_前綴表示該變量/函數為此模塊私有,其他模塊並不應該訪問(不應該訪問並不能代表不能訪問)

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

在主函數中調用

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

同樣是可以調用的,單數從編程習慣上來說不應該引用private函數

python中的面向對象編程

和普通函數相比,在類中定義的函數只有一點不同,就是第一個參數永遠是實例變量self,並且調用時不用傳遞該參數

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

python多進程和多線程

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

也可以用multiprocessing來創建子進程

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習

創建子進程的時候,只需要傳入一個執行函數和函數的參數,創建一個process實例,用start方法啟動,這樣創建進程比fork還要簡單,join()方法可以等待子進程結束後在繼續往下運行,通常用於進程間的同步。

多線程VS多進程

多進程:最大的優點就是穩定性高,因為一個子進程崩潰了,不會影響主進程和其他子進程。缺點就是,在windows環境下,創建多個進程開銷巨大。

多線程:通常比多進程快一點,但是也塊不到哪裡去。多線程模型下,任一個線程崩潰都會導致整個程序崩潰,因為所有線程共享進程的內存。

在線程和進程中,應當優選process,因為process更穩定,而且process可以分佈到多臺機器上,而thread最多隻能分佈到同一臺機器的多個cpu上。

python當中的正則表達式(re模塊)

這部分內容涉及到python中獨特而又強大的字符串匹配機制,內容比較複雜和龐大,先留個坑

正則表達式

python基礎大概就記了這些筆記,當然python編程是很強大的,分佈式和網絡編程包括python爬蟲等都相當強大。

前輩說先學會了這些Python知識點,再談學習人工智能、機器學習


分享到:


相關文章: