python 進階知識點

來源:互聯網
上載者:User

標籤:過濾   lte   排列   instance   產生   process類   for   對list進行排序   參數   

1.切片:截取List,tuple指定範圍內的值:>>L[0,3]

2.如果給定一個list或tuple,我們可以通過for迴圈來遍曆這個list或tuple,這種遍曆我們稱為迭代(Iteration)。    在Python中,迭代是通過for ... in來完成的   for x in L      print(x)

3.列表產生式時,就是動態建立列表,把要產生的元素x * x放到前面,後面跟for迴圈,就可以把list建立出來,十分有用,多寫幾次,很快就可以熟悉這種文法。

for迴圈後面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方:

>>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100]

還可以使用兩層迴圈,可以產生全排列:

>>> [m + n for m in ‘ABC‘ for n in ‘XYZ‘] [‘AX‘, ‘AY‘, ‘AZ‘, ‘BX‘, ‘BY‘, ‘BZ‘, ‘CX‘, ‘CY‘, ‘CZ‘]

運用列表產生式,可以快速產生list,可以通過一個list推匯出另一個list,而代碼卻十分簡潔。

4。產生器 在Python中,這種一邊迴圈一邊計算的建立list的機制,稱為產生器:generator,節省大量的空間       g=(x * x for x in range(10)]        for  x in g:              print(x)

5.這些可以直接作用於for迴圈的對象統稱為可迭代對象:Iterable。     以被next()函數調用並不斷返回下一個值的對象稱為迭代器:Iterator。      可以使用isinstance()判斷一個對象是否是Iterator對象: 小結 凡是可作用於for迴圈的對象都是Iterable類型;

凡是可作用於next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列;

集合資料類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象。

Python的for迴圈本質上就是通過不斷調用next()函數實現的,例如:

for x in [1, 2, 3, 4, 5]:     pass

6. 函數式編程的一個特點就是,允許把函數本身作為參數傳入另一個函數,還允許返回一個函數! 可見,abs(-10)是函數調用,而abs是函數本身。 說明變數f現在已經指向了abs函數本身。直接調用abs()函數和調用變數f()完全相同。

7.編寫高階函數,就是讓函數的參數能夠接收別的函數。map,reduce

8.filter()函數 Python內建的filter()函數用於過濾序列。

9.排序演算法 Python內建的sorted()函數就可以對list進行排序: sorted()也是一個高階函數。用sorted()排序的關鍵在於實現一個映射函數。 >>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] 要進行反向排序,不必改動key函數,可以傳入第三個參數reverse=True:

>>> sorted([‘bob‘, ‘about‘, ‘Zoo‘, ‘Credit‘], key=str.lower, reverse=True) [‘Zoo‘, ‘Credit‘, ‘bob‘, ‘about‘]

10.閉包 內建函式sum可以引用外部函數lazy_sum的參數和局部變數,當lazy_sum返回函數sum時,相關參數和變數都儲存在返回的函數中,這種稱為“閉包(Closure)”的程式結構擁有極大的威力。 高階函數除了可以接受函數作為參數外,還可以把函數作為結果值返回。

11.匿名函數  關鍵字lambda表示匿名函數,冒號前面的x表示函數參數。 >>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) [1, 4, 9, 16, 25, 36, 49, 64, 81

12.裝飾器  在函數調用前後自動列印日誌,但又不希望修改now()函數的定義,這種在代碼運行期間動態增加功能的方式,稱之為“裝飾器”(Decorator)。

13. 偏函數  簡單總結functools.partial的作用就是,把一個函數的某些參數給固定住(也就是設定預設值),返回一個新的函數,調用這個新函數會更簡單。

14. 模組  在Python中,一個.py檔案就稱之為一個模組(Module)。為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的檔案裡,為了避免模組名衝突,Python又引入了按目錄來組織模組的方法,稱為包(Package)。 範圍 在一個模組中,我們可能會定義很多函數和變數,但有的函數和變數我們希望給別人使用,有的函數和變數我們希望僅僅在模組內部使用。在Python中,是通過_首碼來實現的。

15 正常的函數和變數名是公開的(public),可以被直接引用,比如:abc,x123,PI等;

類似__xxx__這樣的變數是特殊變數,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊變數,hello模組定義的文檔注釋也可以用特殊變數__doc__訪問,我們自己的變數一般不要用這種變數名;

類似_xxx和__xxx這樣的函數或變數就是非公開的(private),不應該被直接引用,比如_abc,__abc等;

之所以我們說,private函數和變數“不應該”被直接引用,而不是“不能”被直接引用,是因為Python並沒有一種方法可以完全限制訪問private函數或變數,但是,從編程習慣上不應該引用private函數或變數。

由於Python是跨平台的,自然也應該提供一個跨平台的多進程支援。multiprocessing模組就是跨平台版本的多進程模組。 multiprocessing模組提供了一個Process類來代表一個進程對象

python 進階知識點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.