09 - 函式(中)
阿新 • • 發佈:2020-10-11
1. 函式的返回值
- 返回值就是函式執⾏以後返回的結果
- 通過return來指定函式的返回值
- return後⾯可以跟任意物件,返回值甚⾄可以是⼀個函式
- 當你不寫return語句和只有一個return時,返回值是None
- 在函式中return後面的程式碼不再執行
- break 和continue一定只能在迴圈中使用,只會對當次迴圈起效果
2. 文件字串
- help()是Python中內建函式,通過help()函式可以查詢Python中函式的⽤法
- 在定義函式時,可以在函式內部編寫⽂檔字串,⽂檔字串就是對函式的說明
3. 函式的作用域
- 作⽤域(scope)
- 作⽤域指的是變數⽣效的區域
- 變數在函式內部的話,不能拿到函式外部使用
- 在Python中⼀共有兩種作⽤域
- 全域性作⽤域
- 全域性作⽤域在程式執⾏時建立,在程式執⾏結束時銷燬 (python垃圾回收機制:引用計數的功能,當計數為0的時候,就會銷燬變數)
- 所有函式以外的區域都是全域性作⽤域 (相對的,函式巢狀)
- 在全域性作⽤域中定義的變數,都是全域性變數,全域性變數可以在程式的任意位置進⾏訪問
- 函式作⽤域 函式作⽤域在函式調⽤時建立,在調⽤結束時銷燬
- 函式每調⽤⼀次就會產⽣⼀個新的函式作⽤域
- 在函式作⽤域中定義的變數,都是區域性變數,它只能在函式內部被訪問
- global 宣告變數是全域性變數
4. 名稱空間
- 名稱空間實際上就是⼀個字典,是⼀個專⻔⽤來儲存變數的字典
- locals()⽤來獲取當前作⽤域的名稱空間
- 如果在全域性作⽤域中調⽤locals()則獲取全域性名稱空間,如果在函式作⽤域中調⽤locals()則獲取函式名稱空間
- 返回值是⼀個字典
5. 遞迴函式
- 遞迴是解決問題的⼀種⽅式,它的整體思想,是將⼀個⼤問題分解為⼀個個的⼩問題,直到問題⽆法分解時,在去解決問題
- 遞迴式函式有2個條件
- 1.基線條件 問題可以被分解為最⼩問題,當滿⾜基線條件時,遞迴就不執⾏了
- 2.遞迴條件 可以將問題繼續分解的條件
- 遞迴函式練習
1.定義一個函式,為任意數字做任意的冪運算
2.定義一個函式,用來檢查任意的一個字串是不是一個迴文字串,如果是返回True,不是返回False
練習
- 漢諾塔遊戲,現在有ABC三根柱⼦。要求:將A柱所有的圓盤放到C柱。 在移動的過程中可以藉助B柱。並且規定⼤圓盤不能放⼩圓盤上⾯,每次只能移動⼀個盤⼦。⽤遞迴的⽅式來解決漢諾塔問題。
- 用函式實現一個判斷使用者輸入的年份是否潤年的程式
- 1.能被400整除的年份
- 2.能被4整除,但不能被100整除的年份
- 以上2種方法滿足一種即為閏年。
- 猴子吃桃問題(遞迴):
猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都多吃了前一天剩下的一半零一個。到第十天早上還想再吃時,見到只剩下一個桃子,求第一天共摘了多少桃子?