p22 P23 p24 p25 p26
B站上課鏈接
中文字幕:麻省理工學(xué)院公開課:計算機科學(xué)及編程導(dǎo)論(Python語言教程)
# 綜述課引言
1. 黑盒抽象將計算的細節(jié)和計算的使用分開。是的我們更容易調(diào)試算法和程序。構(gòu)造復(fù)雜函數(shù)
2. 引進環(huán)境的形式,可視化處理。觀察使用python解釋器的函數(shù)。我們?nèi)绾斡眠@些方法把新算法概念化
3. 獲得能力將任意計算轉(zhuǎn)化為函數(shù),將函數(shù)作為其他計算的組成部件,計算思維的重要元素
# 前言
1. 我們面臨的問題是什么呢
- 我們的代碼缺乏抽象性
- 一個變量名沒辦法在不同腳本之間公用
- 每次想使用代碼都要重新載入文件
- 一旦程序出了bug就要不斷搜索這個代碼,很難維護
函數(shù)把代碼包裝起來使得維護和應(yīng)用變得簡單
2. 怎么從機械的角度來思考函數(shù)運作的方式,如何把正確的數(shù)值存儲在正確的位置?
- 使用環(huán)境的概念
# 概念
1. 函數(shù)定義
def? < function name>(< formal parameters>):
? ? ? ? ? ? ? < function body>
2. 函數(shù)返回值,如果不返回,會自動產(chǎn)生None返回
3. 環(huán)境
- 一套形式體系,用于追蹤變量和數(shù)值的綁定關(guān)系
-? 將名稱和表達式綁定的配對放到一張表中,我們就叫它環(huán)境
4. python shell就是一個全局環(huán)境
5. 環(huán)境指針
6. 調(diào)用函數(shù)的時候,局部環(huán)境是怎么發(fā)揮封裝作用的?
函數(shù)的封裝叫做靜態(tài)轄域(static)
# 應(yīng)用
1. 求最大值
```python script
def max(x,y):
????????if x>y:
????????????return x
????????else:
????????????return y
```
2. 用環(huán)境來做一下循環(huán)
3. 假設(shè)想把某些數(shù)字的指數(shù)換成其他數(shù)字,計算新的乘冪
用函數(shù)實現(xiàn)
4. 這個簡單的函數(shù)定義例子可以幫我們理解為什么明明函數(shù)里外的變量名一樣,卻無法直接調(diào)用函數(shù)里面的變量名,并且函數(shù)內(nèi)外不會沖突的事實
P26. 的3:54對函數(shù)的內(nèi)外差異進行了最易懂的說明
5.
# 總結(jié)
我們學(xué)習了函數(shù)如何模塊化處理,進行真正的抽象。
利用環(huán)境的定義幫助我們傳送參數(shù),對他們進行綁定
了解到可以對變量名稱建立局部綁定,不同于全局綁定