函式作用域

2021-10-05 04:31:21 字數 1975 閱讀 9306

- 匿名函式,lambda

def

f(o)

:if o>7:

print

(o)print

(list

(filter

(lambda o:o>8,

[4,77

,22,4

,8])

))list

(filter

(f,[4,

77,22,

4,8]

))#列印的話會返回none

[77,

22]7722

8

a =

5deff(

):global a #要用全域性變數需宣告,且下面的呼叫會改變了全域性原值,覆蓋掉原有的全域性變數值

a = a +

4print

(a)f(

)print

(a)

9

9

b =

9#global變數

defk()

:# global b

# b = b - 4

b =10#區域性變數,相當於k1的全域性,對於k1而言屬於巢狀作用域

print

(b)defk1(

):#k1的爸爸是k,全域性是他爺, 用爺爺global全域性,用爸爸nonlocal區域性

nonlocal b

b = b+

1print

(b) k1(

)#沒有新增呼叫 ,無法單獨k1()

print

(b)k(

)print

(b)

9

1011

9

k =

2defg(

):global k

k = k+

2print

(k)defng(

):m = k +

3#k是全域性變數,g函式的k是可變的,因此呼叫無需宣告?

print

(m) ng(

)print

(k)g(

)print

(k)

247

4

b =

6defg(

):# global b

f = b +

2#只是拿來使用,不是定義原本的b,如果是b = b +2這個才需要宣告(定義原本值),

#本身全域性變數是**都可以直接呼叫的

print

(f)defg2(

):#f在g函式裡是原本存在的,屬於不可變,呼叫需要宣告?

f = b +

3print

(f)# g2()

g()

8
m =

2#佔記憶體程式結束時候--》銷毀,

deff()

: n =

5#函式執行完---》銷毀

deff1()

:nonlocal n

n +=

1print

(n)return f1f()

()

6
def

f(j)

: a =

5deff2(

):nonlocal j

for i in

range(5

):j +=

1print

(j)return f2()f(

6)

11

函式作用域

有巢狀函式的時候有return x的返回函式x的位址,沒有的則為none def f1 n1 f1 print f1中 n1 def f2 n2 f2 def f3 n3 f3 print f3中 n3 print f2中 n2 return f3 return f2 r1 f1 print r1 ...

函式作用域

函式作用域 呼叫函式時建立函式作用域,函式執行完畢以後,函式作用域銷毀 每呼叫一次,函式就會建立乙個新的函式作用域,它們之間是互相獨立的 在函式作用域中,可以訪問到全域性作用域的變數 在全域性作用域中無法訪問到函式作用域的變數 具體示例 當在函式作用域操作乙個變數時,它會先在自身作用域中尋找,如果有...

函式作用域

函式作用域 name alex def foo name cql def bar print name bar foo cql return 返回乙個函式 def test1 print test1 def test print test return test1 返回乙個函式,return可以返回...