lambda表示式與變數作用域

2021-10-10 04:45:43 字數 3869 閱讀 6530

#c是區域性變數

n =1

deffunc

(a,b)

:# global c #該句可解決執行錯誤

#函式外變數

deffun()

: x =

30#函式內變數

x = x+

20#對函式內的x進行操作

print

("函式內變數x="

,x)return x

if __name__ ==

"__main__"

: fun(

) x = x+

40#對函式外的x進行操作

print

("函式外變數x="

,x)

#求n的階乘

deffact

(n):

if n==0:

f =1else

: f = n*fact(n-1)

return f

if __name__ ==

"__main__"

: n =

int(

input

("請輸入整數n(n>=0):"))

print

(n,"!="

,fact(n)

)

def

test

(x,alist)

:print(,

id(x)

)print(,

id(alist)

) x +=13

)print

("加1操作後,函式裡的x變數的值是:"

,x)#x的位址改變

print

("新增操作後,函式裡的alist變數的值是:"

,alist)

#alist的位址沒有變

print(,

id(x)

)print(,

id(alist)

)if __name__ ==

"__main__"

: alist =[1

,2] x =

5print

('最開始x的位址是',id

(x))

#最開始函式裡的x的位址和函式外的x的位址是相同的

print

('最開始alist的位址是',id

(alist)

) test(x, alist)

print

('最後函式外的x的值'

,x)#函式外x的值和函式裡x的值不同

print

('最後函式外的alist的值'

,alist)

#函式外的alist的值和函式裡alist的值相同

print

('最後函式外的x的位址',id

(x))

#函式外x的位址和函式裡x的位址不同

print

('最後函式外的alist的位址',id

(alist)

)#函式外的alist的位址和函式裡alist的位址相同

#可變引數是指函式定義時標識帶星(*)的引數,從而函式呼叫時允許向函式傳遞可變數量的實參

# *parameter:接收多個引數並放在乙個元組中

# **parameter:接收多個關鍵引數並存放到乙個字典中

defvfunc

(a=0

,*b)

:#*b是乙個可變引數,不管傳入值的型別是什麼,他都是乙個元組型別的

print

(type

(b))

for n in b:

a += n

return a

if __name__ ==

"__main__"

:print

(vfunc(1,

2,3,

4,5)

)

def

afunc

(t=""

,**b)

:print

(type

(b))

for item in b.items():

print

(item)

t += item[1]

#把每個item元組的值取出來賦值給t並連線

# 匿名函式

# lambda[形參表]:表示式表

# 函式名 = lambda[形參表]:表示式表

# def 函式名([形參表]):

# return 表示式表

f =lambda x,y,z:x+y+z

g =lambda x,y=

2,z=

3:x+y+z

d =#d是乙個字典,鍵相當於是函式名,值是匿名函式,且該匿名函式沒有形參,直接是函式表示式

print

(f(1,2

,3),g(1)

)print

(type

(d))

print

(d["f1"](

),d[

"f2"](

),d[

"f3"](

))#通過字典的鍵訪問對應的值的函式。

]#把匿名函式放到列表中,有三個匿名函式

print

(l[0](

2),l[1](

2),l[2](

2))print

(type

(l[0])

)

lambda表示式的變數作用域

1 lambda表示式等價於乙個小函式,表示式的值就是函式的返回值。2 可以給lambda表示式起名字,也可以不起名字。3 在lambda表示式中使用沒有定義的變數,預設是全域性變數。這裡就進行演示一下為什麼lambda上面的定義 coding utf 8 time 2018 12 4 17 41 ...

lambda表示式的變數作用域

1 lambda表示式等價於乙個小函式,表示式的值就是函式的返回值。2 可以給lambda表示式起名字,也可以不起名字。3 在lambda表示式中使用沒有定義的變數,預設是全域性變數。這裡就進行演示一下為什麼lambda上面的定義 coding utf 8 time 2018 12 4 17 41 ...

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...