Python學習之函式

函式

假如我們寫程式碼實現了三個數相加的功能(a+b+c),要在其他幾個地方都要使用,那就需要複製貼上過去。三個數相加的功能比較簡單,程式碼也很短,複製貼上似乎也沒什麼。

可是如果我們要實現一個複雜的功能,寫了一百行程式碼來實現,在其他地方重複使用的話,複製就顯得程式碼臃腫、可讀性差。

於是就引入了函式,函式就是封裝好的,可重複使用的,用來實現單一,或相關聯功能的程式碼段。

函式能提高程式碼的重複利用率,使得程式碼可讀性更高。

之前我們使用的print,實際上就是python內建的函式。

如何定義一個函式

函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號 ()。

def my_name():    print(“張三”)

函式呼叫

函式呼叫很簡單,直接在開發環境中引用函式名+()就可以了。

my_name()

輸出結果:

張三

引數傳遞

f(x) = x + 1

這是中學學習的方程式,x是這個方程的引數。

函式也可以有引數,而且可以有多個不同型別的引數。

def print_name(name1, name2):    print(name1, name2)

# 呼叫該函式print_name(‘李四’, ‘王五’)

輸出結果:

李四 王五

函式返回值 —— return 語句

上面定義的函式並沒有返回值,但是有時候我們呼叫一個函式,需要得到這個函式的返回值。

這就用到了return 語句。

# 實現三個數相加功能的函式,並將結果返回def my_func(a, b, c):    result = a + b + c    return result

我們呼叫這個函式,並傳三個引數給它:

# 函式的返回值賦值給res,然後打印出來res = my_func(1, 2, 3)print(res)

輸出結果:

6

變數作用域

我們知道一個方程式的引數只在當前方程中有效,換到另一個方程式是無法使用的。

比如,f(x) = x + 1, g(x) = x + 2。我們傳 x = 3 代入方程f,f(3) = 3 + 1,結果是4。但是方程g並不能使用這個引數3。

這就是函式中的

區域性變數

還有一個公用的值,比如PI=3。14。在很多方程式中使用,為了方便,我們把它定義成一個常量,所有方程式可以隨便使用。

這就是函式中的

全域性變數

區域性變數

區域性變數定義在函式的內部,而全域性變數定義在函式的外部。

#區域性變數def func(x):    result = x + 1    return result

#呼叫函式result = func(3)print(result)

列印結果:

4

在函式外呼叫區域性變數可以嗎?

print(x)

列印結果:

NameError: name ‘x’ is not defined

可見區域性變數只能在定義它的函式內使用。

#全域性變數pi = 3。14def func2(r):    # 圓的面積公式    result = pi * (r^2)    return result

#呼叫函式result = func2(5)print(result)print(pi)

列印結果:

21。983。14

從上面的例子中可以看到,在函式外部定義的全域性變數可以在函式內外隨意使用

預設引數

預設引數,顧名思義就是在定義函式的同時賦給引數一個預設值,在呼叫函式時可以傳參也可以不傳。

# y就是預設引數def func3(x, y=1):    result = x + y    return result

#呼叫函式res1 = func3(2)  #不傳參,就使用預設引數y=1res2 = func3(2, 3) #傳參,就使用傳入的引數y=3print(res1)print(res2)

列印結果:

35