Python自學筆記11-函數的定義和調用

函數是組織代碼的非常有效的方式,有了函數,我們就可以編寫大規模的項目。可以說,函數是組織代碼的最小單元。

Python函數的定義

函數是代碼封裝的一種手段,函數中包含一段可以重複執行的代碼,在需要用到這些代碼時,只需要調用函數,就會運行函數中的代碼。

python 函數這麼定義:

def 函數名稱(參數1, 參數2)
 函數體(要運行的代碼)

比如一個很簡單的函數定義:

def add(a, b):
	return a + b

現在我們舉個例子說明函數的作用。

print('打開高級車門')
print('開發動機')
print('安全帶')
print('踩油門')
print('掌握方向')

如果要開很多次車,那麼每次都需要敲相同的 5 行代碼,這樣會造成幾個問題:

  • 很容易編寫不同的代碼,或者代碼出現錯誤
  • 代碼冗餘,可讀性不強
  • 不容易維護,當需要修改某個步驟時,要修改多處。

Python函數的調用

現在我們可以把上述代碼封裝在函數中,當需要運行這些代碼時,調用函數就可以了,這樣減少了很多複製粘貼或者手工編寫多行代碼的步驟,函數的名稱也表明了代碼的作用,當需要修改部分邏輯,只需要修改函數體就可以了。

def run_car():
    print('打開高級車門')
    print('發動發動機')
    print('繫上安全帶')
    print('踩油門')
    print('掌握方向')

run_car()
# 其他代碼
run_car()

Python函數的返回值

return 表示當函數執行完之後,想讓函數外面的程序得到函數執行的結果, return 的值可以任意的數據類型。

def add(a, b):
	return a + b

result = add(3,4)
print(result)

  • 函數體當中的代碼, 遇到 return 會終止運行。
  • 函數的返回結果可以是任意類型,包括 None
  • 當函數體當中沒有 return ,默認返回 None

Python函數可以返回多個值, 只需要在多個值之間加上逗號,得到的是元組類型。

def add(a, b):
 return a, b

參數的四種類型

return 表示函數返回給外部的值,而參數表示函數從外部接收的值。在函數定義時候的參數叫做形式參數,它其實就是一個變量名稱,在函數調用時候的參數叫做實際參數,相當於給變量賦值。

def get_coffee(suger):
    if suger > 100:
        return '甜咖啡'
    elif suger < 1:
        return '美式'
    else:
        return '莫名其妙的咖啡'

result = get_coffee(100)
print(result)

注意,形式參數的個數和實際參數的個數要一樣,而且順序要一致,這種方式叫做位置參數。(和領導喫飯做位置)如果形式參數和實際參數的個數不一致,會導致程序無法分別賦值:

def add(a, b):
    c = a + b - 1
    return c

add(578# NO

關鍵字參數:在調用函數的時候,做一個關鍵字標記,以防傳參錯誤,造成損失。主要是當參數很多的情況,你記不清順序,關鍵字去標識數據的意思。

默認參數:在函數定義的時候,給某個變量直接賦值,成爲默認值。 就是使用默認值直接賦值,在調用函數的時候,可以少傳參數。關鍵字參數,默認參數也好,都必須放到位置參數的後面。

def add(a, b=0):
    c = a + b - 1
    return c

add(a=4, b=6)
add(3)

自動化測試場景:添加多個數據,運行多個用例

def write_case(number):
    for _ in range(number):
        username = input("請輸入用戶名:")
        passwd = input("請輸入密碼:")
        age = input("請輸入年齡:")

        user = dict()
        user.update(username=username,
                    passwd=passwd,
                    age=age)
        yield user

def run(case):
    print(f"運行用例-用戶名{case['username']}")

    cases = write_case(2)
    for case in cases:
        run(case)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章