1. 程式人生 > 實用技巧 >C++通過Eigen庫實現最小二乘法的三種方法

C++通過Eigen庫實現最小二乘法的三種方法

python函式

函式初識

​ 函式就是一段可以重複多次呼叫的程式碼,通過輸入的引數值,返回需要的結果。

函式的定義

​ 函式使用關鍵字def定義。函式在使用之前必須定義,函式的型別即返回值的型別。

​ python函式定義的格式如下所示:

# 函式的定義
def 函式名(引數1, 引數2....):
		...
		return 表示式

​ 函式名可以是字母、數字或下劃線組成的字串,但不能以數字開頭。函式的引數放在一對圓括號中,引數的個數可以有一個或多個,引數之間用逗號加空格隔開,這種引數成為形式引數。括號後面以冒號結束,冒號下面就是函式的主體。

函式的呼叫

​ 函式的呼叫採用函式名加一對圓括號的方式,圓括號內的引數是傳遞給函式的具體值。

例,使用列表實現len方法:

# 函式的呼叫
def my_len():
    lis = [1, 2, 34, 55, 66]
    c = 0
    for i in lis:
        c += 1
    return c


print(my_len()) # 函式的呼叫:函式名()
# 輸出結果為:5

函式的引數

​ 在C、C++中,引數的傳遞有值傳遞和引用傳遞兩種方式,而python中一切皆是物件,所以只支援引用傳遞方式。python通過名稱繫結的機制,把實際引數的值和形式引數的名稱繫結在一起,即把形式引數傳遞到函式所在的區域性名稱空間中,形式引數和實際引數只想記憶體中同一個儲存空間。

# 函式的引數
lis = [1, 2, 34, 55, 66]
def my_len(s): # def 函式名(形式引數)
    c = 0
    for i in s:
        c += 1
    return c


ret = my_len(lis) # 函式的呼叫:函式名(實際引數)
print(ret)

函式的傳參

從實際引數角度和形式引數角度去認識。

實際引數角度

​ 位置傳參、關鍵字傳參、混合傳參。

位置傳參

​ 按位置順序,一一對應。

# 位置傳參
def mymax(x, y):
    the_max = x if x > y else y
    return the_max


ma = mymax(10, 20)
print(ma)
關鍵字傳參

​ 按關鍵字,一一對應。

# 關鍵字傳參
def mymax(x, y):
    print(x, y)
    the_max = x if x > y else y
    return the_max


ma = mymax(y=10, x=20)
print(ma)
混合傳參

​ 指位置引數和關鍵字引數混合傳參,位置引數必須在前面,對一個形參只能賦值一次。

# 混合傳參
def mymax(x, y):
    print(x, y)
    the_max = x if x > y else y
    return the_max


ma = mymax(10, y=20)
print(ma)
形式引數角度

​ 位置引數、預設引數、動態引數。

位置引數

​ 按位置順序,一一對應。

預設引數

​ 如果不傳參,則預設使用預設引數,傳參則覆蓋(常用的會設定預設引數)。

動態引數

​ 即可變引數,可以接受所有的位置引數與關鍵字引數,*args,**kwargs。

“*”的用法
形參角度所有引數的順序

函式的返回值

沒有返回值

返回一個值

返回多個值

名稱空間和作用域

遞迴函式

匿名函式

內建函式

函式進階

高階函式

函式的巢狀

函式名的運用

閉包

裝飾器