一:函數 二。函數的使用 三,函數的分類 四,函數的返回值 ...
一:函數
# ***** # 函數:完成 特定 功能的代碼塊,作為一個整體,對其進行特定的命名,該名字就代表函數 # -- 現實中:很多問題要通過一些工具進行處理 => 可以將工具提前生產出來並命名 # => 通過名字就可以找到工具 => 使用工具來解決問題
# 函數的優點: # 1. 避免代碼的冗餘 # 2. 讓程式代碼結構更加清晰 # 3. 讓代碼具有復用性,便於維護 # 函數的四部分 ''' 1. 函數名:使用該函數的依據 2. 函數體:完成功能的代碼塊 3. 返回值:功能完成的反饋結果 4. 參數:完成功能需要的條件信息 ''' # 定義函數的語法:通過def關鍵字來定義 def get_water(water, money): print('收入你的%d元錢') print('給你%s水種') return '礦泉水'
二。函數的使用
# ***** # 使用函數: # 1.根據需求定義函數 # 2.通過函數名找到函數所在的位置(記憶體地址) # 3.函數名() 執行函數地址中存放的所有代碼塊 # -- 函數在定義時需要外界的參數,就要在調用時傳入對應的參數 # 4.函數執行完一定有返回結果,通過return關鍵字將結果返回給外界 # -- 外界需要知道執行結果,用變數接收,反之只執行函數(不需要接收)即可 # 註:函數必須先定義,後使用 # 函數的四部分都可以根據需求的變化而變化 def get_water(water, money): print('收入你的%d元錢' % money) print('給你%s水種' % water) return water # 需要使用函數,就調用一次 res = get_water('礦泉水', 10) print(res) print('玩耍...') print('又口渴了...') # 又來需求,在調用一次,代碼可以復用,函數只有一個,代碼結構清晰且不冗餘 res = get_water('王老吉', 20) print(res)
三,函數的分類
# *** # 1.根據函數體分類 # 空函數: pass來填充函數體的函數 # -- 優先明確函數名,暫不明確函數體(編程中就存在一些沒有函數體的函數) def login(): pass # 在開發初期,可以講所有功能提前列出來,用pass占位著,後期再去填充功能體 # 非空函數:有函數體的函數 def fn2(): print('函數體') # 2.根據函數參數分類 def add(): print('功能體不需要外界的參數') n1 = input('n1: ') n2 = input('n2: ') print(n1 + n2) # 有參函數 def add_two(n1, n2): print('功能體需要外界的參數') print(n1 + n2) # 3.根據函數返回值分類:所有的函數都有返回值 # 不明確返回值 def low_two(n1, n2): # 外部不需要知道內部的執行結果 print(n1 - n2) # 明確返回值 def jump_two(n1, n2): # 外部需要知道內部的執行結果 return n1 * n2 res = jump_two(10, 20) print(res)
四,函數的返回值
# ***** # 重點:函數名() # 1)拿到函數地址 => 2)加()執行函數體 => 3)得到函數的執行結果 # 重點: 返回值的功能 # 1.結束函數;2.將函數的內部數據返回給外部 # 二、應用場景 # 1.不明確return關鍵詞的函數:系統在函數最末尾自動添加了return,返回的是None def fn1(): print('普通的函數執行') res = fn1() # 一般不需要對這樣的函數進行接收執行結果 print(res) # 2.明確空return關鍵詞的函數:為了結束函數而return def print_msg(): while True: msg = input("msg: ") if msg == 'q': # break return # 在特定的位置需要直接結束函數,但不需要告訴外界某個結果,用空return處理 print(msg) print(msg) # 在break下可以被執行,在return下不能被執行 res = print_msg() print(res) # 3.有明確的返回值需求的函數: # -- python中的函數本質上只能返回一個值, # -- 值跟在return關鍵詞後 # -- 可以通過語法上返回多個值,值之間用逗號隔開,但是本質上返回裝有多個值的元組 # 一個值 def get_num(): num = input('num: ') return num print(get_num()) # 多個值 def get_two_num(): n1 = input('n1: ') n2 = input('n2: ') return n1, n2 # return (n1, n2) # print(get_two_num()) num1, num2 = get_two_num() # python的return支持多值返回的語法原因是python中有解壓賦值 print(num1, num2) # 總結: # 當用一個值接收函數的返回值,一定沒有問題 # -- 函數返回一個接收一個;函數返回多個,接收裝有多個值得元組 # 當用多個值接收函數的返回值,採用的是解壓賦值的機制,返回值的個數一定要與接收值得個數相同