簡單的回覆一下:
```
def somethings(a,b):
```
在小弟跟同學解釋類似的東西的時候,都會把他稱之為函數
要用更簡單的說就是: sin(pi)=0 cos(pi)=-1 類似的意思,
括號內丟個東西進去(或是也可以不用丟),經過他其中的程式碼,
將你丟進去的東西轉換成別的我想要的東西(有點繞口)。
現在來看你的程式碼吧!
code:
====
def outer():
b = 10
def inner(x):
return 5 * x + b
return inner
b = 2
f = outer()
print(f(b))
====
這邊我們要理解的是:程式雖然是由上開始逐行執行,但是def只是一個函數,
只有在我們需要他的時候才會呼叫他,
還有不同函數的代號是分開理解的,所以outer()的b跟,
b=2的b是不一樣的b。
所以從b=2開始執行,
1. b = 2
2. 讓outer()這個函數也可以用f來呼叫他
3. 輸出f(b),也就是執行outer()
4. outer()裡面的b=10,中間的inner(x)還沒呼叫到所以不執行
5. return inner 先呼叫inner
6. inner(x)需要的東西在這邊會稱為x,那他原本是甚麼呢?就是我們
一開始放進去的b(也就是2)
7. return 5 * x + b
\_就是2 \_就是10,因為在outer裡面的b都被我們定義為10
8. 回到5. return inner 回傳inner給我們的值
9. print(f(b)) 輸出:20
end_
要理解為甚麼7. 的x 是二而不是10可以看看我修改後的範例:
https://imgur.com/685sX38
大guy寺john