函數概念

tags: Python
def 函數名(引用的變數): 要做的事情 return 要回傳的參數

範例:比較大小

使用函數前

x = eval(input('請輸入第一個數字')) y = eval(input('請輸入第二個數字')) if x < y : print('%d < %d' % (x , y)) elif x > y : print('%d > %d' % (x , y)) else : print('%d = %d' % (x , y))

光一次比較就需要那麼多行;且當需要重複使用比大小這個功能時,就需要一直複製貼上,程式碼也會變得很臃腫

使用函數後

x = eval(input('請輸入第一個數字')) y = eval(input('請輸入第二個數字')) def z (n, m): if n < m : print('%d < %d' % (n , m)) elif n > m : print('%d > %d' % (n , m)) else : print('%d = %d' % (n , m)) return 0 z (x , y) z (n = y, m = x)

使用函數的兩種寫法都可以;可以按照定義順序輸入參數,也可以指定填入的參數

全域變數 與 區域變數

在上述的範例中,n, m變數僅存在於函數z內,所以被稱為區域變數

可以想像為函數為程式的微宇宙,其基本定律與主宇宙無異;所以函數內的編程語法與主程式相同,但函數內的變數(區域變數)不與函數外相通,函數外的變數(全域變數)也不與函數內相通

x, y則是全域變數,存在於主宇宙;但由於他們身分與微宇宙不相通,所以在微宇宙使用時也要換成該宇宙內的稱謂

return

在執行完函數後,可以選擇向主宇宙回報資訊,常見的像是布林值, 區域變數, 或指定的參數

範例:體位判定

SMMP = eval(input('請輸入骨骼肌肉量(單位:kg)')) weight = eval(input('請輸入體重(單位:kg)')) sex = input('請輸入性別 M/F') SMMP = SMMP / weight * 100 def x (sex, SMMP): if sex == 'M' and 34 > SMMP >32: n = ('健康') elif sex == 'M' and SMMP > 34 : n = ('標準') elif sex == 'M' and SMMP < 32: n = ('虛弱') elif sex == 'F' and 30 > SMMP > 28: n = ('標準') elif sex == 'F' and SMMP > 30 : n = ('健康') elif sex == 'F' and SMMP < 28 : n = ('虛弱') elif sex != 'M' or sex != 'F' : n = ('性別輸入格式錯誤') return n print(x (sex, SMMP))

備註:

1. 使用函數時,盡量讓其不要影響到主程式

可以的話回傳參數就好,留給主程式操作空間,使函數具有更大的泛用性

2. 當輸入不確定個數的參數時,可以用*

def name(*name): for num, *number in enumerate(name) : print(f'num = {num+1}, name = {number}') return 0 name('Harry', 'Jack', 'Hank')
Select a repo