python大法好——遞迴、內建函數、函數進階

來源:互聯網
上載者:User

標籤:測試   sub   code   列表   contains   16進位   進階   函數調用   copy   

1.遞迴(自己幹自己)
def  fun(n):        n=n/2        print(n)        if(n>2)           fun(n)#函數調用fun(10)

結果是5 2 1 0

遞迴的執行過程:遞迴執行到最裡面一層,外面的層還沒有結束,所以由內而外結束。

證明:

def  fun(n):        n=n/2        print(n)        if(n>2)           fun(n)        print(n)#函數調用fun(10)

結果是 0 1 2 5

遞迴擷取最後一個值:

def calc(n,count):    print(n,count)    if count<5:        return calc(n/2,count+1)    else:        return nc=calc(10,1)# print("最後一個值的結果是",c)

 

遞迴的特性:

1.必須有一個終止條件

2.每次進入更深一層遞迴時,問題規模應該比上次遞迴應當減少。

3.遞迴效率不高,遞迴層次過多會導致棧溢出。

2.內建函數

1 any()  接受一個迭代器,如果迭代器裡有一個元素為真,那麼返回True,否則返回False

2. ascii()  調用對象的__repr__()方法,獲得該方法的傳回值.

3. bin(), 6. oct(),  7. hex()    三個函數功能為:將十進位數分別轉換為2/8/16進位。

4. bool()  測試一個對象是True還是False.

5. bytes()  將一個字串轉換成位元組類型

6. str()  將字元類型/數實值型別等轉換為字串類型

7. challable()  判斷對象是否可以被調用,能被調用的對象就是一個callables對象,比如函數和帶有__call__()的執行個體

8.classmethod()  用來指定一個方法為類的方法,由類直接調用執行,只有一個cls參數,執行雷的方法時,自動將調用該方法的類賦值給cls.沒有此參數指定的類的方法為執行個體方法

9.delattr()  刪除對象的屬性

10. dict()  建立資料字典

11. dir()  不帶參數時返回當前範圍內的變數,方法和定義的類型列表,帶參數時返回參數的屬性,方法列表

1 >>> dir()2 [‘__builtins__‘, ‘__doc__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘li‘, ‘li1‘, ‘li2‘, ‘li_1‘]3 >>> dir(list)4 [‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__delitem__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__gt__‘, ‘__hash__‘, ‘__iadd__‘, ‘__imul__‘, ‘__init__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__reversed__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__setitem__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘append‘, ‘clear‘, ‘copy‘, ‘count‘, ‘extend‘, ‘index‘, ‘insert‘, ‘pop‘, ‘remove‘, ‘reverse‘, ‘sort‘]

12. divmod()  分別取商和餘數

13. eval()  將字串str當成有效運算式來求值並返回計算結果

1 >>> s = "1+2*3"2 >>> type(s)3 <class ‘str‘>4 >>> eval(s)5 7

14.hash()  雜湊值

15. id()  返回對象的記憶體位址

16. input()  擷取使用者輸入內容

17. int()  將一個字串或數值轉換為一個普通整數

18. len()  返回對象長度,參數可以是序列類型(字串,元組或列表)或映射類型(如字典)

19 list()  列表建構函式

20. locals()  列印當前可用的局部變數的字典

21. max()  返回給定元素裡最大值

...

...

3.函數進階

名稱空間(存放的是變數名字與值之間關係的地方)

名稱空間共三種:

A.locals:是函數內的名稱空間,包括局部變數和形參

B.globals:全域變數,函數定義所在的模組的名字空間

C.builtins:內建模組的名字空間

 

範圍的尋找順序:LEGB

local-encosing-globals-builtins

 

閉包

這種情況是閉包!

def calc():    n=10    def fun():        print(n)     return fun()calc()#結果是10  程式走進calc函數沒有執行什麼走到return 這是程式應該是要結束了但 return返回了 fun函數 進入fun函數 根據就近原則得到n=10 返回了10的結果

裝飾器

由於暫時想的不是太全今天就不寫了,不能自圓其說!

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.