Python中的函數| 學呀- Python | def、程式設計、方法
文章推薦指數: 80 %
Python中的函數在上個章節中,我們提到了一些關於函數的基本概念—函數是一個自定義的運算符號,用來處理較為複雜的程式運算。
函數就像一臺機器,你對它是輸入一些數值 ...
返回目錄頁
進入Python的世界
什麼是Python?
Python的安裝
Python第一支程式
萬用的變數
Python中的變數
Python中的註解
資料型態
程式的文法與詞性
Python中的資料型態
基礎的語法
Python的輸出與輸入
Python中的數字運算
Python中的邏輯運算
用py檔案執行Python
Python中的判斷式
迴圈的概念
Python中的for迴圈
Python中的while迴圈
列表的處理
Python列表
Python列表選取
Python列表的複製
Python多維列表
Python常見列表方法
字串的處理
Python字串
Python字串選取
Python字串與for
Python常見字串方法
函數
什麼是函數
更多函數的應用
Python中的函數
程式中的遞迴
Python中的遞迴
Python中的匿名函數
物件導向
物件的概念
物件導向是啥
類別中的方法
Python中的物件導向
必知的Python知識
Python中的變數作用域
Python函數傳入值
Python實戰程式
尚未登入
前去登入/註冊
首頁&搜尋
所有課程
分享資源
最愛課程
收藏內容
常見問題
關於學呀
線上募款
分享章節
將此章節分享到您所屬的Google教室班級中。
貢獻。
致教育
感謝以下內容貢獻者的編輯
NeilLu
Python中的函數
課程目錄
編輯課程
分享至Google教室
Python中的函數
在上個章節中,我們提到了一些關於函數的基本概念—函數是一個自定義的運算符號,用來處理較為複雜的程式運算。
函數就像一臺機器,你對它是輸入一些數值,它就對你輸出一些數值。
數學中的函數
函數這個東西,在數學上的應用相當的廣,還記得為我們都學過的直線方程式$f(x)=2x+1$嗎?其中,$f(x)$就是一個函數,你對它輸入一個值,它就對你輸出一個值:假設將$x$代1,我們將會得到3。
$$f(x)=2x+1$$$$f(1)=2\cdot1+1=3$$
函數也可以有超過一個輸入。
假設我們有一個函數,叫作$g(x,y)$,並定義為$g(x,y)=x+y$。
假設今天我們將$x$、$y$分別帶入1、2,我們將得到3的結果。
$$g(x,y)=x+y$$$$g(1,2)=1+2=3$$
Python程式中的函數
在Python中,要定義一個函數是無比簡單的,就以剛剛的$f(x)=2x+1$的例子來看好了,如果要將其寫作Python的函數,我們可以這樣做:
deff(x): return2*x+1
讓我們先來是用一下這個函數,待會再來看看上面的程式中每一行代表什麼。
我們試著將其印出:
print(f(1))
便會得到結果:
3
結果是不是與我們一開始所看到的$f(1)=3$相同呢?是的!接著,確認程式無誤後,我們可以來看看剛剛的程式中發生了什麼事。
剛剛的程式是這樣的:
deff(x): return2*x+1print(f(1))
在Python中,所有函數都要有相同的起始關鍵字def,因此第一行中的def就是在告訴電腦「這裡有一個函數哦」。
在def後,我們需要告訴電腦我們函數的名稱,在此,函數叫做f。
在第二行中,我們用了return這個關鍵字,代表「會傳」,回傳的數值為2*x+1。
因此,當我們在印出f(1)時,電腦便將數字1傳入函數,函數再將數字3傳回來。
最後,print(f(1))就成了 print(3)的意思,電腦即印出數字3。
接著,讓我們試著將剛才的$g(x,y)=x+y$用Python寫出來吧!
defg(x,y): returnx+y
是不是相當簡單呢?我們使用def關鍵字告訴電腦我們要建立一個函數g,並用return關鍵字告訴電腦這個函數必須回傳x+y的值。
因此,當我們試著:
print(g(1,2))
就會得到:
3
函數中進行別的工作
從剛剛到現在,我們所舉例的函數都只有兩行程式:第一行程式用來宣告函數,第二行程式用來return函數的回傳值。
但是,沒有人規定函數一定只能有一行,基本上,你可以想放幾行程式在函數中,就放幾行程式在函數中。
再進一步討論函數前,我們可以先在大腦中畫出一張函數的圖。
在Python中,絕大多數你會看到的函數都是以這樣的結構定義的:
遇到這種多行的函數程式,最簡單易懂的理解方法就是使用print()函數,它可以告訴我們程式在哪一刻進行到什麼位置。
讓我們先來看看以下的範例:
defadd(x,y): print("在函數中") returnx+yx=3y=5print("函數還沒執行")z=add(x,y)print("函數執行完了")
我們可以看到的是,在這個範例中,函數中不只有return一行之長,而是有兩行所構成。
切記,在同一個Python程式中,縮排的大小必須相等,例如上述例子中的第二和第三行,縮排就都是四個空格。
接著,請你仔細看看程式中的三個print()函數,你覺得在執行程式後,哪一個會先被印出來呢?我們可以試著執行看看,執行後會得到這樣的結果:
函數還沒執行在函數中函數執行完了
為什麼?我們其實可以將程式的每一行拆開來看,看看電腦對於上述程式的執行順序為何,我們從第五行的變數宣告開始:
1.執行x=3 宣告出一個變數x。
2.執行x=3 宣告出一個變數y。
3.執行print("函數還沒執行") (跳入add函數)4.執行print("在函數中")5.執行z=3+5 宣告出一個變數z, 並且將其設為add的回傳值。
6.執行print("函數執行完了")
無回傳值的函數
還記得剛剛講到數學中的函數嗎?在數學中,有一個很重要的函數特性是,只要有輸入,就要有一個對應的輸出。
然而,在程式中,函數不一定要遵守這個規則,也就是說,程式中的函數不一定要有return。
這種不回傳值的函數,稱作無回傳值函數(voidfunction)。
但是,如果函數不回傳任何的值,那這個函數的意義是什麼?答案是:簡化現有的程式碼。
假設我們要製作一個程式,程式中有x和y兩個變數,我們希望印出100組不同x、y的和、差、積、商。
想要寫這個程式,我們應該會這麼做:
x=2y=3print(x+y)print(x-y)print(x*y)print(x/y)x=3y=7print(x+y)print(x-y)print(x*y)print(x/y)#.#.#.#共100組#.#.#.x=0y=4print(x+y)print(x-y)print(x*y)print(x/y)
好的,在經過了99次的複製貼上後,我們得到了上述這樣的程式,看起來不錯吧!但是如果今天我們的題目變了,在你寫完這上面這個程式之後,你發現其實只要 print()兩個數字的差和積就好了,那麼在你改完程式後,是不是又要再重複複製貼上99次呢?
其實,上面這段程式可以使用不同的寫法達到相同的功能,而且在修改時將會方便很多。
我們可以利用不回傳值的函數,把上面一直重複出現的段落包裝起來,並且將x、y組合變成一個陣列,這麼一來,我們將得到這樣的程式:
defprintValue(x,y): print(x+y) print(x-y) print(x*y) print(x/y)xySet=[[2,3],[3,7],...共100項...,[0,4]]forxyinxySet: printValue(xy[0],xy[1])
這麼一來,就算題目真的改成印出x、y的差和積,我們也只要改變兩行程式:將函數printValue()中的多餘程式刪掉就好了。
仔細比較的話可以發現,這個函數跟我們前面所提到的函數,以及我們所熟知數學中的函數不太一樣—這個函數沒有回傳的值,也就是沒有return。
於是我們瞭解,函數不一定要回傳值,假設今天有很多重複的相同程式碼,我們可以將其放入一個沒有回傳的函數中,提高程式的可讀性以及修改速度。
上一章節
下一章節
使用者分享的影片來自YouTube。
瞭解更多。
+1
感謝內容貢獻者
此篇文章由1位使用者共同編輯而成,並且由學呀的編輯團隊負責維護。
點此查看編輯者名單。
貢獻。
致教育
讓我們一同貢獻給新世代的教育在這裡分享、編輯、創建文章
分享資源
建立章節
編輯章節
互動遊戲
轉換為介面
SwitchtoInterface
取消
確認
延伸文章資訊
- 1Python入門(二)函數基礎 - 數據分析那些事- Medium
函數(Functions)是指可重複使用的程式片段。它們允許你為某個程式碼塊賦予名字,允許你透過這一特殊的名字在你的程式任何地方來運行代碼塊 ...
- 2定义函数- 廖雪峰的官方网站
- 3Python 入門筆記:函式基礎,什麼是函式?什麼是回傳值return?
定義函式
- 4Python函式怎麼用?定義、呼叫與回傳【Python練習Day3】
在Python使用函式有兩個步驟,「先定義、在呼叫」:意即先定義並且建立好函式區塊後,在呼叫函式來使用。 函式參數. 函式參數是在呼叫函數時,為了函市內的功能或運算需求 ...
- 5[Python教學]5個必知的Python Function觀念整理
今天要來教大家如何建構自己的 Python函式(Function),就是能夠讓你的程式 ... 預設值參數(Default Argument):在函式定義的參數中,將可以選擇性傳入 ...