#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...