第一課:爲何要使用函數 首先 要知道 本課程的主要講解的內容爲: 一、爲何要建立函數 二、***函數的概念是:將一段可能別重用的代碼封帳到一個代碼段裏面,而後經過函數的參數 ,控制函數的動態部分。// 如何來定義python中的函數和使用函數 *** 三、如何建立一個函數 四、如何爲函數添加文檔註釋,如何獲取函數的文檔註釋 五、函數如何返回一個值 六、改變函數的參數值 七、關鍵字參數與參數默認值 八、可變參數 九、如何將序列中的元素單獨做爲參數值傳遞給函數 十、函數中的做用域 十一、遞歸函數 # 函數 # 第一講爲何要建立函數 ''' 函數的概念 如何建立一個函數 爲函數添加文檔註釋,以及如何獲取文檔註釋 函數如何返回一個值 改變函數的參數值 關鍵字參數與參數默認值 可變參數 如何將序列中的元素單獨做爲參數值傳遞給函數 函數中的做用域 遞歸函數 ''' # 斐波那契數列 的規則:表示 前2個數加起來以後 等於 接下來一個數 fibs =[0, 1] for i in range(10): fibs.append(fibs[-2] + fibs[-1]) print(fibs) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] # 這樣的代碼不夠靈活,都須要改變原程序的邏輯代碼, # 直接在控制檯輸入值 ,而後傳到 執行代碼中 fibs = [0, 1] n = int(input('請輸入一個整數:')) # 這個n的值的來源已經固定了,只能從控制檯輸入,好比我要從數據庫 文本中輸入怎麼辦呢?這樣的話,咱們就須要改變數據來源的方式,還須要改變代碼 這樣的話,咱們就須要用到函數,什麼叫函數:就是把咱們須要大量重用的代碼封裝起來,而後再經過函數的參數來控制函數中動態調整的部分。 for i in range(n): fibs.append(fibs[-2] + fibs[-1]) print(fibs) 輸出結果爲 請輸入一個整數:4 [0, 1, 1, 2, 3, 5] 請輸入一個整數:10 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] -------------------------------------------------------------------------- 第二課:建立和使用python函數 在python中全部的代碼塊結尾的都要有: 函數也是代碼塊(if while for def(函數)) # 函數 # 建立和使用函數 # if while for ''' 函數的模板爲: def funName(param1, param2,...,paramn): statement1 statement2 statement3 ''' 上一講的 斐波那契數列 用函數實現 def fibs(n): # 函數名爲 fibs(n) result = [0, 1] for i in range(n): result.append(result[-2] + result[-1]) return result # 返回值 #print(fibs(10)) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] while True: n = input('請輸入一個整數:') if n == ':exit': break; n = int(n) print(fibs(n)) # 這裏是直接調用了函數了 n和他的獲取方式沒有任何的關係 輸出結果爲: 請輸入一個整數:10 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 請輸入一個整數:3 [0, 1, 1, 2, 3] 請輸入一個整數::exit 一個簡單 pythhon的函數的例子: python中函數的使用的例子 [root@bi-mysql-test scripts_test]# cat python_def02.py # coding:utf-8 # 定義函數 def hello(): print("hello world!") hello() [root@bi-mysql-test scripts_test]# /usr/local/python3.7.3/bin/python3 python_def02.py hello world! --------------------------------------------------------------------------------------------- 第三課:爲函數添加文檔註釋(重要) # 函數 # 爲函數添加文檔註釋 ''' 多行註釋 # 已# 開頭的爲單行註釋 ''' """ 多行註釋 """ def add(x,y): '計算兩個數的和' # 這個就是文檔註釋 return x + y print(add(1,2)) print(add.__doc__) # 輸出的結果爲: 計算兩個數的和 這個是意思經過程序 輸出文檔註釋 help(add) 輸出的結果爲: 3 計算兩個數的和 Help on function add in module __main__: add(x, y) 計算兩個數的和 // 這個文檔註釋很是的有用,咱們在 編寫一個library的庫 每一個函數,每一個方法如何來用的話,就能夠經過doc或者help的方式 和這個函數相關的註釋文檔輸出 就能夠生成整個成熟的幫助文檔 例子: def hello(): '這個是hello world' print("hello world!") hello() # hello world! print(hello.__doc__) # 這個是hello world 輸出的結果爲: hello world! 這個是hello world ------------------------------------------------------------------------------------- 第四課:沒有返回值的函數 // 不是 全部的 函數都是要有返回值的,在有些語言裏 將沒有返回值的函數叫作過程 # 沒有返回值的函數 # Pascal 過程 # 沒有返回值 # 1. 沒有return語句 # 2. return語句後面沒有跟任何值 # 3. 沒有返回值的函數返回的是None # 小結: 咱們經過函數的返回值爲None 並不能判斷函數有沒有return def fun1(flag): if flag: print("知足條件") else: print("不知足條件") fun1(True) # 知足條件 def fun2(flag): if flag: return # 沒有返回值 退出當前的代碼塊,這個此時的含義和break是同樣的 print("知足條件") fun2(True) # 知足條件 fun2(False) # 不知足條件 print(fun1(False)) # None def fun3(flag): if flag: return 20 else: return None print(fun3(True)) # 結果爲: 20 若是爲真返回20 print(fun3(False)) # 結果爲: None 若是爲假就返回None