# 定義乙個高階函式,實現將乙個列表中所有的偶數重新組合成乙個新的列表
list_1 =
list
(range(1
,15))
# 先定義乙個判斷偶數的函式a
defa
(i):
if i %2==
0:return
true
# 定義乙個函式b,將資料新增到新的列表中
defb
(func, l)
: list_2 =
for n in l:
if func(n)
:return list_2
print
(b(a, list_1)
)結果:[2,
4,6,
8,10,
12,14]
閉包
形成閉包的條件:
def
make_fn()
: list_2 =
deffn3
(n):
return
sum(list_2)
/len
(list_2)
return fn3
f = make_fn(
)print
(f(52))
# 52.0
print
(f(555))
# 303.5
print
(f(999))
# 535.3333333333334
list_2 =
# 閉包內部存在乙個list_2的列表,不會受影響
print
(f(45))
# 412.75
匿名函式
print((
lambda a, b: a + b)
(100
,200))
# 300
裝飾器的引入
def
add(a,b)
: r = a + b
return r
# 現在又對著乙個程式進行優化,加上提示字元,計算開始,計算結束
defadd
(a,b)
:print
('開始計算....'
) r = a + b
print
('結束計算....'
)return r
# 這樣很明顯就已經修改了源**。如果這個**是別人給你的而且是比較複雜的**的話,你還敢這樣修改嗎?出現這樣的狀況我們應該怎麼做呢?這個時候我們可以使用裝飾器。
裝飾器的使用
def
start_end
(old)
:# 建立乙個函式
defnew_function
(*a,
**b)
# 使用*a, **b的方式什麼樣的引數我們都可以接受到了
print
('函式開始了....'
) result = old(
*a,**b)
# 引數old 要擴充套件的函式,即要被優化的函式
print
('函式結束了....'
)return result
return new_function
# 這樣沒有改變源**的方式對原函式進行優化、擴充套件的一些程式被我們稱為裝飾器
# 這樣的**直接傳參就可以了,但是我們一般並不會像這樣去使用裝飾器
@start_end
defspeak()
:print
('今天也要好好學習!!!'
)speak(
)結果:函式開始了...
.今天也要好好學習!!!
函式結束了...
.# 一般我們會這樣用
命名空間
命名空間實際上就是乙個字典,是乙個專門用來儲存變數的字典
locals()可以用來獲取當前作用域的命名空間
返回值是乙個字典
如果在全域性作用域中,locals()就會獲取全域性命名空間;如果是在函式作用域中,locals()就會獲取函式命名空間
a =
10deffn(
):print
('我是函式fn....'
)
scope =
locals()
print
(scope)
結果:,
'__builtins__'
:(built-in)
>
,'__file__'
:'c:/users/dell/pycharmprojects/study/day11/命名空間.py'
,'__cached__'
:none
,'a':10
,'fn'
:>
,'scope'
:}
永遠的一課
面對困難,許多人戴了放大鏡,但和困難拼搏一番,你會覺得,困難不過如此。那天的風雪真暴,外面像是有無數發瘋的怪獸在呼嘯廝打。雪惡狠狠地尋找襲擊的物件,風嗚咽著四處搜尋。大家都在喊冷,讀書的心思似乎已被凍住了。一屋的跺腳聲。鼻頭紅紅的歐陽老師擠進教室時,等待了許久的風席捲而入,牆壁上的 中學生守則 一鼓...
我的第一課 電子學基礎
平時遇到電阻串並聯的問題。總是拿計算器計算,而看了這本書,發現可以用乙個近似的方法,快速計算電阻值。方法如下 乙個較大的電阻和乙個較小的電阻串聯,總阻值接近於較大的電阻。乙個較大的電阻和乙個較小的電阻併聯,總阻值接近於較小的電阻。n個相同的電阻併聯後的阻值,等於單個電阻的1 n。電阻損耗的功率 p ...
XML的第一課
xml,呵呵新接觸的。以前也聽過xml,但不是很了解。第一章今天也學完了,也對xml有了一點的了解,下來我也談談 xml 呵呵。主要是第一章xml的概述和dtd技術。如果那裡有錯誤,希望朋友們幫我指出來。也讓我學習學習。不廢話了,進入正題xml 一 什麼是xml 和xml 的產生 xml英文縮寫 e...