Python-函數(下)詳解筆記

python學習網站推薦

一、函數的返回值
編寫函數,實現功能,給函數兩個數,返回這兩個數的和

def mySum(num1, num2):
    #將結構返回給函數的調用者
    return num1 + num2
    #執行完return語句,該函數就結束了,return後面的代碼不執行
    print("**********")

res = mySum(1, 2)
print(res)

二、傳遞參數
值傳遞:傳遞的不可變類型
string、tuple、number是不可變的

def func1(num):
    print(id(num))
    num = 10
    print(id(num))

temp = 20
print(id(temp))
func1(temp)   #num = temp
print(temp)

引用傳遞:傳遞的可變類型
list、dict、set是可變的

def func2(lis):
    lis[0] = 100
li = [1,2,3,4,5]
func2(li)
print(li)


a = 10
b = 10
b = 40
print(id(a), id(b))

c = 20
d = 30
print(id(c), id(d))
d = c
print(id(c), id(d))

三、關鍵字參數
概念:允許函數調用時參數的順序與定義時不一致

def myPrint(str, age):
    print(str, age)

使用關鍵字參數

myPrint(age = 18, str = "sunck is a good man")

四、默認參數
概念:調用函數時,如果沒有傳遞參數,則使用默認參數

以要用默認參數,最好將默認參數放到最後

def myPrint(str, age = 18):
    print(str, age)

myPrint("kaige")

五、不定長參數
概念:能處理比定義時更多的參數

1.加了星號(*)的變量存放所有未命名的變量參數,如果在函數調用時沒有指定參數,它就是一個空元組

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

func("sunck", "good", "nice", "handsom")

def mySum(*l):
    sum = 0
    for i in l:
        sum += i
    return sum
print(mySum(1,2,3,4,5,6,7))

2.**代表簡鍵值對的參數字典,和*所代表的意義類似

def func2(**kwargs):
    print(kwargs)
    print(type(kwargs))

func2(x=1, y=2, z=3)


def func3(*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))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章