Python學習筆記-函數


'''
認識函數:在一個完整的項目中,某些功能會反覆的使用,那麼我們會將功能封裝成函數
當我們要使用功能的時候直接調用函數即可

本質:函數就是對功能的封裝

優點:
1、簡化代碼結構,增加了代碼的重複使用的程度。
2、如果想修改某些功能或者調試某些BUG,只需要修改對應函數即可

定義函數:
格式:
def 函數名(參數列表):
    語句
    return 表達式

def:函數代碼塊以def關鍵字開始
函數名:遵循標誌符規則
參數列表(參數1,參數2,。。。參數n):任何傳入函數的參數的變量必須放在括號之間,
用逗號分隔,函數從函數的調用者那裏獲取信息
: 函數的內容以冒號開始,並且縮進
語句:函數封裝的功能
return:一般用於結束函數的,並返回信息給函數的調用者
表達式:即爲要返回給函數調用者的信息
注意:最後的return表達可以不寫,相當於return None
'''

#定義了一個無參無返回值的函數
def myPrint():
    print("tom is a good man")
    print("tom is a  man")

'''
函數的調用
格式:函數名(參數列表)

函數名:要使用的功能的函數的函數名
參數列表:函數的調用者給函數傳遞的信息,沒參數小括號也不能缺
函數調用的本質:實參給形參賦值的過程
參數必須按順序傳遞
'''
myPrint()

#形參:定義函數時小括號中的變量,本質是變量
def my_Print(str,age):
    print(str,age)

#實際參數:調用函數時給函數傳的數據,本質是值
my_Print("tom",99)

#將結果返回給函數的調用者,執行完return函數結束,return後面的不執行
def mySun(num1, num2):
    return  num1 + num2

print(mySun(1,2))   #3

'''
傳遞不可變類型
'''
def func1(num):
    num = 10

temp = 20
func1(temp)
print(temp)   #20值不變


'''
傳遞的可變類型
'''
def func2(lis):
    lis[0] = 100

lis = [1,2,3,4,5]
func2(lis)
print(lis)    #[100, 2, 3, 4, 5]

'''
關鍵字參數:允許函數調用時參數的順序與定義時不一致
'''
def func3(str,age):
    print(str,age)
#使用關鍵字參數
func3(age = 99,str = "tom")

'''
默認參數:調用函數時,如果沒有傳遞參數,使用默認參數
如果要用默認參數,最好將默認參數放到最後
'''
def func4(str = "tom",age = 88):
    print(str,age)
func4()                     #tom 88
func4("jay")                #jay 88

'''
不定長參數:能處理比定義時更多的參數
'''
#加了*的變量存放所有未命名的參數變量,如果在函數調用時沒有指定參數,他就是一個空元組

def func5(name, *args):
    print(name)
    for x in args:
        print(x)

func5("tom","is","a","good","man")

#**代表鍵值對參數字典
def func6(**kwargs):
    print(kwargs)
    print(type(kwargs))         #<class 'dict'>

func6(x = 1,y = 2,z = 3)        #{'x': 1, 'y': 2, 'z': 3}

def func7(*args, **kwargs):
    pass #代表一個空語句


'''
匿名函數:不使用def這樣的語句定義函數,使用lambda來創建匿名函數
特點:
1、lambda只是一個表達式,函數體比def簡單
2、lambda的主體是一個表達式,而不是代碼塊,僅僅只能在lambda表達式中封裝簡單邏輯
3、lambda函數有自己的命名空間,且不能訪問自有參數之外的或全局命名空間的參數
4、雖然lambda是一個表達式且看起來只能寫一行,與c和c++內聯函數不同
格式:lambda 參數1,參數2.。。。,參數n:expression
'''
sum = lambda  num1,num2:num1+num2
print(sum(1,2))    #3

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