1. 程式人生 > 實用技巧 >python基礎--函式

python基礎--函式

一. 函式的作用

需求:使用者到ATM機取錢:

  1. 輸入密碼後顯示"選擇功能"介面
  2. 查詢餘額後顯示"選擇功能"介面
  3. 取2000錢後顯示"選擇功能"介面

特點:顯示“選擇功能”介面需要重複輸出給使用者,怎麼實現?

函式就是將一段具有獨立功能的程式碼塊 整合到一個整體並命名,在需要的位置呼叫這個名稱即可完成對應的需求。

函式在開發過程中,可以更高效的實現程式碼重用

二. 函式的使用步驟

2.1 定義函式

def 函式名(引數):
    程式碼1
    程式碼2
    ......

2.2 呼叫函式

函式名(引數)

注意:
1. 不同的需求,引數可有可無。
2. 在Python中,函式必須先定義後使用

2.3 快速體驗

需求:復現ATM取錢功能。

  1. 搭建整體框架(復現需求)
print('密碼正確登入成功')

# 顯示"選擇功能"介面

print('查詢餘額完畢')

# 顯示"選擇功能"介面

print('取了2000元錢')

# 顯示"選擇功能"介面
  1. 確定“選擇功能”介面內容
print('查詢餘額')
print('存款')
print('取款')
  1. 封裝"選擇功能"

注意:一定是先定義函式,後呼叫函式。

# 封裝ATM機功能選項 -- 定義函式
def select_func():
    print('-----請選擇功能-----')
    print('查詢餘額')
    print('存款')
    print('取款')
    print('-----請選擇功能-----')
  1. 呼叫函式

在需要顯示“選擇功能”函式的位置呼叫函式。

print('密碼正確登入成功')
# 顯示"選擇功能"介面 -- 呼叫函式
select_func()

print('查詢餘額完畢')
# 顯示"選擇功能"介面 -- 呼叫函式
select_func()

print('取了2000元錢')
# 顯示"選擇功能"介面 -- 呼叫函式
select_func()

三.函式的引數作用

思考:完成需求如下:一個函式完成兩個數1和2的加法運算,如何書寫程式?

# 定義函式
def add_num1():
    result = 1 + 2
    print(result)


# 呼叫函式
add_num1()

思考:上述add_num1函式只能完成數字1和2的加法運算,如果想要這個函式變得更靈活,可以計算任何使用者指定的兩個數字的和,如何書寫程式?

分析:使用者要在呼叫函式的時候指定具體數字,那麼在定義函式的時候就需要接收使用者指定的數字。函式呼叫時候指定的數字和定義函式時候接收的數字即是函式的引數。

# 定義函式時同時定義了接收使用者資料的引數a和b,a和b是形參
def add_num2(a, b):
    result = a + b
    print(result)


# 呼叫函式時傳入了真實的資料10 和 20,真實資料為實參
add_num2(10, 20)

四.函式的返回值作用

例如:我們去超市購物,比如買菸,給錢之後,是不是售貨員會返回給我們煙這個商品,在函式中,如果需要返回結果給使用者需要使用函式返回值。

def buy():
    return '煙'

# 使用變數儲存函式返回值
goods = buy()
print(goods)

4.1 應用

需求:製作一個計算器,計算任意兩數字之和,並儲存結果。

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


# 用result變數儲存函式返回值
result = sum_num(1, 2)
print(result)

五.函式的說明文件

思考:定義一個函式後,程式設計師如何書寫程式能夠快速提示這個函式的作用?

答:註釋

思考:如果程式碼多,我們是不是需要在很多程式碼中找到這個函式定義的位置才能看到註釋?如果想更方便的檢視函式的作用怎麼辦?

答:函式的說明文件

函式的說明文件也叫函式的文件說明。

5.1 語法

  • 定義函式的說明文件
def 函式名(引數):
    """ 說明文件的位置 """
    程式碼
    ......
  • 檢視函式的說明文件
help(函式名)

5.2 快速體驗

def sum_num(a, b):
    """ 求和函式 """
    return a + b


help(sum_num)

六.函式巢狀呼叫

所謂函式巢狀呼叫指的是一個函式裡面又呼叫了另外一個函式

  • 示例
def testB():
    print('---- testB start----')
    print('這裡是testB函式執行的程式碼...(省略)...')
    print('---- testB end----')

def testA():
    print('---- testA start----')
    testB()
    print('---- testA end----')

testA()
  • 效果

  • 執行流程

  • 如果函式A中,呼叫了另外一個函式B,那麼先把函式B中的任務都執行完畢之後才會回到上次 函式A執行的位置。

七. 函式應用

7.1 列印圖形

  1. 列印一條橫線
def print_line():
    print('-' * 20)


print_line()

  1. 列印多條橫線
def print_line():
    print('-' * 20)


def print_lines(num):
    i = 0
    while i < num:
        print_line()
        i += 1


print_lines(5)

7.2 函式計算

  1. 求三個數之和
def sum_num(a, b, c):
    return a + b + c


result = sum_num(1, 2, 3)
print(result)  # 6
  1. 求三個數平均值
def average_num(a, b, c):
    sumResult = sum_num(a, b, c)
    return sumResult / 3

result = average_num(1, 2, 3)
print(result)  # 2.0

八. 總結

  • 函式的作用:封裝程式碼,高效的程式碼重用

  • 函式使用步驟

    • 定義函式
    def 函式名():
        程式碼1
        程式碼2
        ...
    
    • 呼叫函式
    函式名()
    
  • 函式的引數:函式呼叫的時候可以傳入真實資料,增大函式的使用的靈活性

    • 形參:函式定義時書寫的引數(非真實資料)
    • 實參:函式呼叫時書寫的引數(真實資料)
  • 函式的返回值

    • 作用:函式呼叫後,返回需要的計算結果
    • 寫法
    return 表示式
    
  • 函式的說明文件

    • 作用:儲存函式解釋說明的資訊
    • 寫法
    def 函式名():
        """ 函式說明文件 """
    
  • 函式巢狀呼叫:一個函式內部巢狀呼叫另外一個函式