Python3 Note(No.2)

python官方文檔:https://docs.python.org/zh-cn/3.8/

在Python中,定義一個函數要使用def語句,依次寫出函數名、括號、括號中的參數和冒號:,然後,在縮進塊中編寫函數體,函數的返回值用return語句返回。

pass可以用來作爲佔位符;

isinstance() :數據類型檢查

if not isinstance(x, (int, float)):檢驗傳入的x是否爲int或float型

函數可以返回多個值;

 

默認參數:在函數參數中寫入參數並賦值,如果賦值的參數在之後的調用中不需要更改,則調用時不需要再顯示地寫出來,只有不同時才需要重新賦值 ,大大降低了函數調用的難度,默認參數必須指向不變對象!:

def enroll(name, gender, age=6, city='Beijing') #age和city被賦予默認參數

>>> enroll('Sarah', 'F')    #調用函數給非默認參數賦值,默認參數如果不需要改變則無需書寫並直接輸出
name: Sarah
gender: F
age: 6
city: Beijing

enroll('Adam', 'M', city='Tianjin') #city需要變化,重新賦值

 

可變參數:傳入的參數個數是可變的 ;在參數前面加了一個*號;允許你傳入0個或任意個參數;可變參數在函數調用時自動組裝爲一個tuple

>>> nums = [1, 2, 3]
>>> calc(*nums)
14

 

關鍵字參數:允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個dict。 函數的調用者可以傳入任意不受限制的關鍵字參數。至於到底傳入了哪些,就需要在函數內部通過kw檢查

def person(name, age, **kw):
    if 'city' in kw:
        # 有city參數
        pass
    if 'job' in kw:
        # 有job參數
        pass
    print('name:', name, 'age:', age, 'other:', kw)

 

命名關鍵字參數:限制關鍵字參數的名字;和關鍵字參數**kw不同,命名關鍵字參數需要一個特殊分隔符**後面的參數被視爲命名關鍵字參數。

def person(name, age, *, city, job):
    print(name, age, city, job)

如果函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就不再需要一個特殊分隔符*了 

在Python中定義函數,可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。 

遞歸中解決棧溢出的方法:尾遞歸法,在函數返回的時候,調用自身本身,並且,return語句不能包含表達式。 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章