小甲魚p20 21 內嵌函式和閉包

2021-10-04 11:42:37 字數 1712 閱讀 9854

全域性變數和區域性變數

count =

10#全域性變數

deffun1()

: count =

5#建立乙個和全域性變數一樣名字的區域性變數,兩者不是乙個

print

(count)

>>

>fun1(

)#輸出函式中count

>

5>>

>count #區域性變數不影響全域性變數

>

10

global關鍵字,nonlocal

count =

10def

fun1()

:global count #這裡是引用全域性變數

count =

5print

(count)

>>

>count

>

10>>

>fun1(

)>

5>>

>count //全域性變數改變了

>

5

內嵌函式

>>

>

def funx():

#在這個函式內部可以隨意調動內嵌函式,但是在外面不可以

print

("函式fun1"

)def

fun2()

:print

("內嵌函式fun2"

) fun2(

)>>

>fun2(

)函式fun1

內嵌函式fun2

閉包

>>

>

deffunx

(x):

deffuny

(y):

deffuny

(y):

return x*y

return funy

>>

> i = funx(8)

i>

<

locals

>

.funy at 0x000001c79aeb0bf8

>

>>

>

type

(i)//顯示是函式

>

<

class

'function'

>

#>i(5)

>

40>>

>funx(4)

(6)>

24

匿名函式,lambda所謂匿名,意即不再使用 def 語句這樣標準的形式定義乙個函式。

只包含乙個語句:lambda 後面用到的引數:expression

# 可寫函式說明

sum=

lambda arg1, arg2: arg1 + arg2

# 呼叫sum函式

print

("相加後的值為 : "

,sum(10

,20))

print

("相加後的值為 : "

,sum(20

,20))

內嵌函式和閉包

1 python裡面定義函式和c裡面一樣,也存在函式的巢狀定義,eg def fun1 x def fun2 y z x y return z return fun2則在函式呼叫的時候需要傳遞2個實參,分別給x,y 且形式為 result fun1 a b 2 由於在python函式定義的時候,出現...

python 內嵌函式和閉包

在函式體內定義函式 定義a 函式 defa print a 函式 定義b 函式 defb print b 函式 呼叫b 函式 b 呼叫a 函式 a 輸出 a 函式 b 函式 定義閉包函式 defa num1 def b num2 return num1 num2 return b 檢視a 函式的返回...

課時20 內嵌函式和閉包

目錄 一 global關鍵字 二 內嵌函式 三 閉包 四 課時20課後習題及答案 一 global關鍵字 全域性變數的作用域是整個模組 整個 段 也就是 段內所有的函式內部都可以訪問到全域性變數。但是要注意一點,在函式內部僅僅去訪問全域性變數就好,不要試圖去修改它。因為那樣的話,python會使用遮...