1. 程式人生 > >python 入門之 – 初識函式(二十四)

python 入門之 – 初識函式(二十四)

上面學完了 python 的基本資料型別和檔案操作之後,今天學了一個新的知識點,函式,那麼什麼是函式呢?

先來看一個例子:

a = 2
if a == 1:
    print('當前的 a 等於:' + str(a))
    print('a 的值比 10 相差'+str(10-a))
elif a == 1:
    print('當前的 a 等於:' + str(a))
    print('a 的值比 10 相差' + str(10 - a))
elif a ==2:
    print('當前的 a 等於:' + str(a))
    print('a 的值比 10 相差'
+ str(10 - a)) elif a == 3: print('當前的 a 等於:' + str(a)) print('a 的值比 10 相差' + str(10 - a)) >> 當前的 a 等於:2 a 的值比 10 相差8

上方判斷表示式裡面,每個判斷表示式裡面的程式語句都是一樣的,在沒有學過函式之前這樣寫肯定是可以的,當然如果一個一摸一樣的程式碼寫了幾百個地方,那麼如果一個專案上線了之後維護出了問題需要除錯程式碼,那麼就要修改好幾百個一摸一樣的方法了,這樣一來專案的維護成本就非常大了,而函式很好的解決了這個問題。

幾乎每一門語言都有函式,如:在JavaScript

裡面申明一個函式,是通過 function,如下方程式碼

function method(){
	console.log('呼叫成功')
}
method()

我在 JavaScript 裡面聲明瞭一個方法,然後在我需要的地方直接呼叫函式名稱 mthod 就行,加上括號 () 證明這是一個方法,他就會匹配到對應的函式,然後執行這個方法裡面的程式語句,這樣一來如果專案上線了出現問題了需要改動程式碼,我只需要改變方法裡面的內容,那麼整個專案呼叫的這個方法就會全部被改變,這也就是通常意義上的 面向物件,相反面向物件就是 面向過程,同理,在我們沒有學過 python 的函式之前,也就是如前面的那些章節的程式碼程式我們全部都是面向過程

的編碼,雖然功能達到了,但是程式碼可讀性和維護性更差,那麼現在就讓我們走進 python 的函式世界吧。

如上方 JavaScript 函式宣告以關鍵字 function ,在 python 裡面函式以關鍵字 def 宣告,我以上面最開始的例子來示範:

a = 2

def method():
    print('當前的 a 等於:' + str(a))
    print('a 的值比 10 相差' + str(10 - a))

if a == 1:
    method()
elif a == 1:
    method()
elif a ==2:
    method()
elif a == 3:
    method()

>> 當前的 a 等於:2
	a 的值比 10 相差8

可以看到我通過函式宣告寫出來的程式碼更加簡介明瞭,而且可讀性更強,如果程式出了問題我只要改動 method() 函式內部的程式語句,那麼全域性都變了,維護也更加容易了。

可能還是有朋友看不懂函式為什麼要這麼寫,那麼我就來一個一個的介紹,首先 python 裡面嚴格規定了,宣告一個函式必須要是 def 關鍵字開頭的,def 關鍵字後面跟著的字母是函式的名稱,關於函式名稱可以隨便取名,但是一定要是 英文字母,最好語義話方便別人能夠讀懂,英文字母后面的必須跟著一個括號 (),就像我們呼叫 python 內建的函式一樣,後面要跟著一個括號,代表你呼叫的是一個函式方法,然後才是和迴圈以及判斷表示式一樣的操作。

當然你呼叫方法的時候如果不加括號,指向的一定不是這個函式的執行方法,而是指向這個函式的記憶體地址:

def method():
	print('hello word')

#如果你想檢視函式 method 執行的記憶體地址,你可以直接 print 一下
print(method)

>> <function method at 0x10f325268>

函式在我們日常編碼當中起著至關重要的作用,後面的幾個章節開始都會圍繞函式來進行進一步的講解,今天就到這兒了。