前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理,
PS:如有需要Python學習資料的小伙伴可以點擊下方鏈接自行獲取
Python免費學習資料、代碼以及交流解答點擊即可加入
1. 位置引數與關鍵字引數
盡管這種方式很常見,但是位置引數的一個弊端是必須熟記每個位置的引數的含義,在呼叫函式 f()時誤把最后一個引數當作第一個引數,會得到完全不同的結果:
關鍵字引數
為了避免位置引數帶來的混亂,呼叫引數時可以指定對應引數的名字,甚至可以采用與函式定義不同的順序呼叫:
你也可以把位置引數和關鍵字引數混合起來,首先,實體化引數 ,然后對引數使用關鍵字引數的方式:
如果同時出現兩種引數形式,首先應該考慮的是位置引數,
默認引數
當呼叫方沒有提供對應的引數值時,你可以指定默認引數值,這個聽起來很普通的特性實際上特別有用,以之前的例子為例:
2.不定引數
*args
位置引數(了解)
在不清楚傳入引數是多少個
無引數呼叫函式,則什么也不會回傳:
給函式傳入的所有引數都會以元組的形式回傳輸出:
這樣的技巧對于撰寫像 print() 一樣接受可變數量的引數的函式是非常有用的,如果你函式同時有限定的位置引數,那么 *args 會收集剩下的引數:
當使用 * 時不需要呼叫元組引數 args,不過這也是 Python 的一個常見做法,
**kwargs
關鍵字引數
使用兩個星號可以將引數收集到一個字典中,引數的名字是字典的鍵,對應引數的值是字典的值,下面的例子定義了函式 print_kwargs(),然后列印輸出它的關鍵字引數:
案例:
案例:假設 python 中的 print 不能一次性傳入多個引數使用了,讓我們自己實作 print 可以傳遞多個引數的功能,
要求:自己撰寫一個 changed_print 函式實作原本 print 的功能,
例:原本函式的功能
3. 一等公民函式
在 Python 中,函式是一等物件,編程語言理論家把“一等物件”定義為滿足下述條件的程式物體:
- 在運行時創建
- 能賦值給變數或資料結構中的元素
- 能作為引數傳給函式
- 能作為函式的回傳結果
在 Python 中,整數、字串和字典都是一等物件——沒什么特別的,接下來的內容將重點討論把函式作為物件的影響和實際應用,
比如說我要將之前函式修改一個名字,使用新的函式名去呼叫舊的函式
把函式當引數傳遞
案例需求 f(1) + f(2) + f(3) + f(4) + f(5)
設:求 f(1) + f(2) + f(3) + f(4) + f(5) + ...+f(N)
全域變數作用域是整個程式,區域變數作用域是定義該變數的子程式,
@拓展
函式的遞回(難點)
函式的遞回(難點)
函式呼叫自身的 編程技巧 稱為遞回
特點
- 函式內部呼叫自己
- 函式內部可以呼叫其他函式,當然在函式內部也可以呼叫自己
代碼特點
- 函式內部的 代碼 是相同的,只是針對 引數 不同,處理的結果不同
- 當 引數滿足一個條件 時,函式不再執行
- 這個非常重要,通常被稱為遞回的出口,否則 會出現死回圈!
遞回階乘
一個正整數的階乘(factorial)是所有小于及等于該數的正整數的積,自然數n的階乘寫作n!,
1、當n=0時,n!=0!=1
2、當n為大于0的正整數時,n!=1×2×3×…×n
示例:函式呼叫本身
斐波那契數列
斐波那契數列(Fibonacci sequence),又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、 8、13、21、34、……在數學上,斐波納契數列以如下被以遞推的 方法定義:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) 每一位數都等于前兩位數之和,在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,
1.定義一個函式 fib
2.能夠接收一個 num 的整數引數
3.計算 1 + 1 + 2 + 3 + 5 + 8 ... num 的結果
第N個數是多少
提示:遞回是一個 編程技巧,初次接觸遞回會感覺有些吃力!在處理 不確定的回圈條件時,格外的有用,例如:遍歷整個檔案目錄的結構
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266599.html
標籤:Python
