[Python初學者] 7種 Functions 函數用法

Python Data Types 資料類型 – Functions 函數

No.
Functions 函數用法
1 定義函數 利用 def 定義 my_function ( ) :
2 指定參數(arguments 在 my_function () 小括號內的指定參數可以是一個或多個
1) 定義 my_function () 中的小括號指定參數 argument
2) 定義 my_function () 中的小括號內多個指定參數
3) 當不知道有幾個指定參數時,在指定參數前加上一個星號 * ,再使用位置 [ ] 表示將帶入的參數位置
4) 當固定 key 等於 value(key = value),則不需要有位置資訊
5) 當不知道有幾個指定參數時,在指定參數前加上兩個星號 ** ,再使用 key = value 表示將帶入的參數的 key
3 默認參數值 Default 定義 my_function () 默認參數值小括號內的 指定參數 Area 等於 ” ” (表示於雙引號內)
4 將列表作為參數呈現 使用迴圈 for…in
5 回傳數值 使用 return
6 當函數定義為空白時 函數定義不能為空白,但基於某種原因而需一個不帶任何內容的函數定義,請放入pass,以避免出錯
7 遞迴 Recursion 需有 1) 自我呼喚、2) 終止條件

1. 定義函數:利用 def 定義 my_function ( ) :

def my_function():
  print("Hello from cute Oceane")

my_function()
Hello from cute Oceane

# 用 def 定義 my_function ( ) : 我的函數(my_function 需加小括號冒號),再 print 出小括號內的字: Hello from cute Oceane,結果 my_function ( ) 則得到小括弧號的字:Hello from cute Oceane。

my_function() 即代表以下兩種動作加起來:
1) def 定義 my_function (): 我的函數
2) print小括弧內的字

2. 指定參數(arguments):在 my_function () 小括號內的指定參數可以是一個或多個。

1) 定義 my_function () 中的小括號指定參數 argument
def my_function(argument):
  print(argument + " Oceane")

my_function("cute")
my_function("adorable")
my_function("joyful")
cute Oceane
adorable Oceane
joyful Oceane

# Print 結果時呈現 1) 指定參數 argument 加上 2) 固定參數 ”  Oceane “(表示於雙引號內)
結果會顯示:指定參數(隨參數改變而改變) + 固定參數 Oceane

例如:
my_function ( ” cute ” ):則呈現 cute + Oceane = cute Oceane 
my_function ( ” adorable ” ):則呈現 adorable + Oceane = adorable Oceane 
my_function ( ” joyful ” ):則呈現 joyful + Oceane = joyful Oceane

2) 定義 my_function () 中的小括號多個指定參數

當有兩個指定參數時:

def my_function(argument1, argument2):
  print(argument1 + " " + argument2)

my_function("Cute", "Oceane")
Cute Oceane

# 如定義兩個 指定參數 argument1 argument2Print 結果時呈現 1) 指定參數 argument1 加上 2) 固定參數 ”  ” (表示於雙引號內)再加上 3) 指定參數 argument2
結果會顯示:指定參數(隨參數改變而改變) + 固定參數 ” “(空格) + 指定參數

例如:
my_function ( ” Cute ” , ” Oceane “):則呈現 Cute + 空格 + Oceane = Cute Oceane 

3) 當不知道有幾個指定參數時,在指定參數前加上個星號 *再使用位置 [ ] 表示將帶入的參數位置:
def my_function(*babies):
  print("The cutest baby is " + babies [2])

my_function("Nathalie", "Emma", "Oceane", "Mia", "Linda")
The cutest baby is Oceane

# 當不知道有幾個指定參數,定義 my_function () 時,小括號內的 指定參數 babies 需加上星號 * ,
Print 結果時呈現 1) 固定參數 ”  ” (表示於雙引號內)再加上 2) 位於位置 2指定參數 babies [ 2 ]
結果會顯示:固定參數 ” The cutest baby is  “ + 位置 2指定參數 babies [ 2 ]

例如:
my_function ( “Nathalie”, “Emma”, “Oceane“, “Mia”, “Linda”)(位置依序為:位置0,位置1,位置2,位置3,位置4):則呈現 固定參數 ” The cutest baby is  “ + 位置 2指定參數 Oceane,結果為: The cutest baby is Oceane。

4) 當固定 key 等於 value(key = value),則不需要有位置資訊:
def my_function(baby2, baby1, baby3):
  print("The cutest baby is " + baby1)

my_function(baby1 = "Oceane", baby3 = "Mia", baby2 = "Emma")
The cutest baby is Oceane

# 如固定
key = value 為:
baby1 = Oceane
baby2 = Emma
baby3 = Mia
其擺放的位置則無固定。
結果為:固定參數 ” The cutest baby is  “baby2 = ” Oceane ” = The cutest baby is Oceane

5) 當不知道有幾個指定參數時,在指定參數前加上兩個星號 **再使用 key = value 表示將帶入的參數的 key
def my_function(**babies):
  print("The cutest baby is " + babies ["arg3"])

my_function(arg1 = "Nathalie", arg2 = "Emma", arg3 = "Oceane", arg4 = "Mia", arg5 = "Linda")
The cutest baby is Oceane

# 當不知道有幾個指定參數,定義 my_function () 時,小括號內的 指定參數 babies 需加上個星號 ** ,
Print 結果時呈現 1) 固定參數 ”  ” (表示於雙引號內)再加上 2) 將帶入參數的 key 至 指定參數 babies [ “ key ” ]

再固定
key = value 為:
arg1 = Nathalie
arg2 = Emma
arg3 = Oceane
arg4 = Mia
arg5 = Linda

結果會顯示:固定參數 ” The cutest baby is  “ + 指定參數 babies [ “ arg3 ” ],結果為 The cutest baby is Oceane

3. 默認參數值 Default Parameter Value:

定義 my_function () 默認參數值小括號內的 指定參數 Area 等於 ” ” (表示於雙引號內)
def my_function(Area = "Taiwan"):
  print("Oceane is from " + Area)

my_function("France")
my_function("Asia")
my_function()
my_function("Europe")
Oceane is from France
Oceane is from Asia
Oceane is from Taiwan
Oceane is from Europe

# 定義 my_function () 默認參數值時,小括號內的 指定參數 Area 等於 “Taiwan” 表示於雙引號內 。
Print 固定參數Oceane is from ” + 指定參數 Area 結果為:
1. 假如出現 my_function(“France“),則結果為: Oceane is from France
2. 假如出現 my_function(“Asia“),則結果為: Oceane is from Asia
3. 假如出現 my_function(),括號中為空白,則結果會使用默認參數值為: Oceane is from Taiwan
4. 假如出現 my_function(“Europe“),則結果為: Oceane is from Europe

4. 將列表作為參數呈現:使用迴圈 for…in

def my_function(fruit):
  for x in fruit:
    print(x)

deliciousfruits = ["peach", "guava", "strawberry"]

my_function(deliciousfruits)
peach
guava
strawberry

# 定義 my_function(fruit),利用迴圈 for… in ,則可將 x 中的字一一帶入 fruit 再 print 出來。當 deliciousfruits 等於 “peach“,”guava“,”strawberry“,分別帶入 my_function(deliciousfruits),則 print 出來的結果分別為: peach、guava、strawberry。

5. 回傳數值:使用 return

def my_function(x):
  return 5 * x

print(my_function(2))
print(my_function(4))
print(my_function(6))
10
20
30

#定義 my_function(x),再使用 return 回傳 5 乘以 x 的結果。
當 print (my_function(2)) 時,則 return5 乘以 2 ,得到結果為 10
當 print (my_function(4)) 時,則 return5 乘以 4 ,得到結果為 20
當 print (my_function(6)) 時,則 return5 乘以 6 ,得到結果為 30

又或者

def my_function(x):
  return 100 / x

print(my_function(2))
print(my_function(5))
print(my_function(10))
50.0
20.0
10.0

#定義 my_function(x),再使用 return 回傳 100 除以 x 的結果。
當 print (my_function(2)) 時,則 return100 除以 2 ,得到結果為 50.0
當 print (my_function(4)) 時,則 return100 除以 5 ,得到結果為 20.0
當 print (my_function(6)) 時,則 return100 除以 10 ,得到結果為 10.0

6. 當函數定義為空白時:

函數定義不能為空白,但基於某種原因而需一個不帶任何內容的函數定義,請放入pass,以避免出錯。
def myfunction():
  pass

# 在其他程式語言會使用 continue

7. 遞迴 Recursion:需有 1) 自我呼喚、2) 終止條件

遞迴的概念即是將一個龐大的問題,切割成小問題,讓問題變得比較好解決。

def recursion(k):
  if(k > 0):
    result = k + recursion(k - 1)
    print(k)
  else:
    result = 0
  return result

print("\n\nRecursion Example Results")
recursion(6)
Recursion Example Results
1
3
6
10
15
21
[Out] 21
遞迴的條件:
1) 自我呼喚:如 recursion ( k ) 等於 k + recursion ( k – 1 )。但假如沒有停止條件的話,則會無限輪迴。
2) 終止條件:k 小於 或 等於 0,結果為 0。

#定義 recursion(k),假如 k 等於 6(k > 0),想得到結果:k 加上 recursion (k – 1),則 recursion(6),即 k = 6:結果為 k + recursion ( k – 1 ) = 6 + recursion (5)

以此類推,結果為
recursion(6)
= 6 + recursion (5)
= 6 + 5 + recursion (4)
= 6 + 5 + 4 + recursion (3)
= 6 + 5 + 4 + 3 + recursion (2)
= 6 + 5 + 4 + 3 + 2 + recursion (1)

所以需要知道recursion(6),則需要知道recursion (5)recursion (4)recursion (3)recursion (2)recursion (1) 的結果。因此 recursion (1) 的結果會先被計算出來,再依次計算出recursion (2)recursion (3)recursion (4)recursion (5) 的結果。

如:
recursion (1) 的結果為:1( 1 + 0 = 1 )
recursion (2) 的結果為:3( 2 + 1 = 3 )
recursion (3) 的結果為:6( 3 + 3 = 6 )
recursion (4) 的結果為:10( 4 + 6 = 10 )
recursion (5) 的結果為:15( 5 + 10 = 15 )
recursion (6) 的結果為:21( 6 + 15 = 21 )

則結果為 21