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