python 高級知識點

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判斷,這樣咱們就能夠篩選出僅偶數的平方:ide

>>> [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類來表明一個進程對象

相關文章
相關標籤/搜索