一、函式的高階特性。
1, map()
#map
deff(x):
returnx * x;
r =
map(f, [1,
2,3])
#map()
函式接收兩個引數,乙個是函式,乙個是iterable,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回。
(list
(r))
r =
map(f, )
(list
(r))
r =
#定義了乙個set,set就是dict沒有值得實現,採用雜湊演算法儲存
(r)2, reduce()
#reduce3, filter()fromfunctoolsimportreduce
#使用reduce需要匯入
deff1(x1,x2):
returnx1 * x2;
a = reduce(f1,[1,
2,3])
#這裡的函式f1必須有兩個引數
# 可以用這個表示式解釋 reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
(a)
#4, sorted()和map()類似,filter()也接收乙個函式和乙個序列。和map()不同的是,filter()把傳入
# 的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。
deffil(x):
ifx %
2 == 0 :
returnx
r =
filter
(fil,[1,
2,3,
8,4,
5,6])
#通過fil過濾出函式返回的值。
(list
(r))
#sorted
可以對list
進行排序,同時可以制定排序規則
r =
sorted([1
,8,-3
,4],key
=abs) #
這裡key
指定了abs
後就忽略正負進行乙個排序,當然可以制定其他規則例如忽略大小寫對字串排序
(r)以上4個函式被稱為高階函式。
二、返回函式。
高階函式除了可以接受函式作為引數外,還可以把函式作為結果值返回。
1, 返回函式。
#2, 匿名函式。返回函式
deffun(*args):
#星號是指引數可變m前面有講過
defsum():
a = 0
foriinargs :
a += ireturna
returnsum
#這裡的返回值是sum這個函式
(fun(1,
2,3,
4,5)())
#返回值函式再被執行被呼叫得到的結果就是求和結果
#說明兩個返回值不是同乙個函式,他們位址並不一樣,是兩個函式,互不影響
#閉包的使用,注意一點就好 : 返回閉包時牢記一點:返回函式不要引用任何迴圈變數,或者後續會發生變化的變數。
#3, 裝飾器。匿名函式
#乙個例子,lambda x: x * x 就是乙個匿名函式
#關鍵字lambda表示匿名函式,冒號前面的x表示函式引數。
f =lambdax: x * x
#可以這樣寫,f就可以呼叫匿名函式了。
#4, 偏函式裝飾器deffun(a):
defexc():
("
進入")
returna()
returnexc
@fun
defb():
("
本身")
b()
#@fun
這裡就執行了b = fun(b),進入fun之後返回exc,
# 當執行b的時候呼叫exc開始執行,執行完了,返回a()既是傳入的b,此時呼叫函式本身,類似動態**
deflog(text):
defdecorator(func):
def
('%s %s():'% (text, func.
__name__
))returnfunc(*args, **kw)
return
returndecorator
#這裡有個3個層,
@log
('text')
defa():
("
出現")
#這裡就是log('text')(a),,,這裡的log已經呼叫完了,不衝突。
a()
#偏函式importfunctools
int2 = functools.partial(
int,
x ='1',
base = 2
) #使用偏函式,來固定函式的某一的引數
(int2())
Latex 基礎教程5
我們知道在用latex寫文件時,有時需要新增,在latex中匯入時,使用figure和graphicx上下文環境時,所有將自動匯入索引。例子如下 figure環境負責文件中的圖形的編號和定位。要引入圖形必須包含 includegraphics命令,它會在後面的括號中定義影象的寬度和路徑,這裡將放在同...
python基礎教程
乙個簡單的客戶機 import socket s socket.socket host socket.gethostname port 1234 s.bind host,port s.listen 5 while true c,addr s.accept print got connection f...
Python基礎教程
本教程不包括python的安裝,ide採用spyder pytho2.7 1.print pow 2,3 8 print 2 3 8這裡pow函式表示乘方,與 功能相同。2.abs 10 10abs函式用來求乙個數的絕對值。3.round 0.6 1.0 round 0.4 0.0round函式將浮...