在Python學(xué)習(xí)中,我們會接觸到各類各樣的特性,如果能夠熟練掌握這些特性,我們的技術(shù)水平也會大幅度提升,那掌握它首先要了解它,小編整理了高級特性的定義,希望能幫助到大家,讓我們來看看都有哪些吧。
閉包即可以訪問另一個函數(shù)作用域中的變量的函數(shù),創(chuàng)建閉包的方法就是在一個函數(shù)內(nèi)部創(chuàng)建另一個函數(shù)。其函數(shù)里面嵌套函數(shù),外部函數(shù)的返回值是內(nèi)部函數(shù)的引用,內(nèi)部函數(shù)還可以使用外部函數(shù)的變量。
裝飾器指為被裝飾器對象添加額外功能的工具或函數(shù),如果我們已經(jīng)上線了某個項目,則需要修改某一個方法,但我們?nèi)绻幌胄薷牡脑?,就可以使用裝飾器,軟件的維護該遵循開放封閉原則,也就是軟件上線運行后,軟件的維護對修改源代碼是封閉的。
裝飾器必須遵循2大原則:1、封閉:對已經(jīng)實現(xiàn)的功能代碼塊封閉,不修改被裝飾對象的源代碼。2、開放:即對擴展開放。裝飾器就是在遵循這兩者的前提下開發(fā)的。
裝飾器本身是一個函數(shù),可以用來處理其他函數(shù),也可以讓其他函數(shù)在不需要修改代碼的前提下增加額外的功能,裝飾起的返回值也是一個函數(shù)對象。
Python也支持多裝飾器,裝飾器的執(zhí)行順序是由上至下的,被裝飾器的執(zhí)行順序是由下至上的,一般情況下,在函數(shù)中可以使用一個裝飾器,但有時也會有兩個或兩個以上的裝飾器,多個裝飾器的執(zhí)行順序是自下至上的,也就是就近原則,而調(diào)用的順序是由上至下的。
Python中也有一些內(nèi)置的高階函數(shù),請看下面:
1、map():會根據(jù)提供的函數(shù)對指定序列做映射,當(dāng)序列多一個時,map可以并行地對每個序列執(zhí)行。
2、reduce():會對參數(shù)序列中元素進行累計。
3、filter():用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
4、sorted():對所有可迭代的對象進行排序操作,返回重新排序的列表,其中reverse表示排序規(guī)則,true為降序,false為升序,升序(false)為默認的。
那在Python中sort()和sorted()的區(qū)別是什么?
1、排序?qū)ο蟛煌簊ort是應(yīng)用在list的方法,sorted可以對所有可迭代的對象進行排序操作。
2、返回值不同:list的sort方法返回的是對已經(jīng)存在的列表進行操作,不存在返回值,內(nèi)建函數(shù)sorted方法返回的是一個新的list,而不是在原來的基礎(chǔ)上進行的操作。