進行結構化的一種程式設計方法,是重要的**組織和復用手段,能節省空間和保持一致性。
引數組(可變長度的引數)
func(*tuple_grp_nonkw_args, **dict_grp_kw_args)
其實只是返回了乙個物件,也就是乙個元組,最後該元組會被拆包到各個結果變數中
返回物件的數目
python實際返回的物件
0none
1object
1tuple
將函式作為引數傳遞,並在函式體內呼叫這些函式
#! /usr/bin/env python
defconvert
(func, seq):
return [func(eachnum) for eachnum in seq]
myseq = (123, 45.67)
print convert(int, myseq)
print convert(long, myseq)
pirnt convert(float, myseq)
[123, 45]
[123l, 45l]
[123.0, 45.67]
>>> sorted(sent)
[...]
>>> sorted(sent, cmp)
[...]
>>> sorted(sent, lambda x, y : cmp(len(x), len(y)))
[...]
將需要執行的所有運算做成乙個列表
def
remove_punctuation
(value):
return re.sub('[!#?]', '', value)
clean_ops = [str.strip, remove_punctuation, str.title]
defclean_strings
(strings, ops)
result =
forvalue
instrings:
for function in ops:
value = function(value)
return result
clean_strings(strings, clean_ops)
這種多函式模式能在很高的層次上輕鬆修改字串的轉換方式。增強可復用性
lambda [arg1[, arg2, ... argn]]: expression
filter(func, seq)
: 呼叫乙個布林函式func來迭代遍歷每個seq中的元素,返回乙個使func返回值為true的元素的序列
map(func, seq)
:將函式呼叫對映到每個序列的元素上,並返回乙個含有所有返回值的列表。
reduce(func, seq)
:使用了乙個二元函式(乙個接受帶兩個值作為輸入,進行了一些計算然後返回乙個值作為輸出)
reduce(func, [1,2,3])
=func(func(1,2),3)
如果在乙個內部函式裡,對在外部作用域(但不是在全域性作用域)的變數進行引用,那麼內部函式就被認為是閉包。定義在外部函式內的但由內部函式引用或者使用的變數被稱為自由變數
閉包也是函式,但是他們能攜帶一些額外的作用域
注意:雖然可以修改任何內部狀態物件(比如向字典中新增鍵值對),但不能繫結外層函式作用域中的變數。
解決方法:修改字典或者列表,而不是繫結變數。
def
counter
(): count = [0]
defincr
(): count[0] += 1
return count[0]
return incr
>>>count = counter()
>>>print count()
1>>>print count()
2
函式式程式語言python 函式式程式設計
函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...
Python3 5 函式與函式式程式設計
1 關於函式 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可。1 函式程式設計方法有3種,它是一種程式設計的規範,分別有面向過程 物件導向和函式式程式設計。2 3種程式設計方法各自特點 面向過程 過程 關鍵字 def 物件導向 類 關鍵字 class ...
python3 5 函式與函式式程式設計
1 物件導向,類 class 2 面向過程,過程 def 3 函式式程式設計,函式 def def func1 print in the func1 return 0 傳遞不定量的引數時,形參使用 的形式,引數會作為乙個元組進入 def test a 元組,接受n個位置引數,轉換成元組的形式 pri...