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