函式式程式設計和函式程式設計是不一樣的。函式是對一段**進行封裝,使得函式達到某個功能或者結果。函式式程式設計,簡言之就是進行數字運算的乙個過程。函式可以作為引數傳入另外的函式,其返回結果也可以是函式。
一、高階函式
1、什麼是高階函式?就是把函式作為引數傳入函式中。
# 例項1,我們看看函式的特性,變數可以指向函式print(abs(-10))
>>> 10
# 這是乙個內建函式,含義是獲取絕對值
# 如果我們只寫abs,不帶後面的括號會提示什麼?abs>>>
# 翻譯過來就是,內建函式abs。說明abs(-10)是函式的呼叫,abs是函式本身。
# 如果我們把函式本身賦值給另外的乙個變數,會出現什麼情況?a=abs
a>>>
# 輸出的結果一樣,說明變數可以指向函式,同時函式可以賦值給變數。
# 那我們用指向函式的變數,對數字取絕對值。print(a(-6))
>>> 6
# 這時,a 已經指向函式abs,同時,具備了abs的功能。
# 例項2,函式名就是變數2、map函式abs=666
print(abs(-6))
>>> traceback (most recent call last):
file "", line 1, in
typeerror: 'int' object is not callable
# 顯然,abs已經指向了數字666,不在指向求絕對值的函式了。
map(func, *iterables)
- func代表的是呼叫的函式
- iterables代表的是迭代函式
- map 函式是把list中的每個元素都傳入到func函式中,取得執行結果。
# 例項1def _abs(x):
return abs(x)
a=map(_abs,[1,-2,-3,4,-5])
list(a)
>>> [1,2,3,4,5]
# 首先定義函式_abs,作用為取數值的絕對值。接著利用map函式,把list 中的每個元素傳入到_abs 函式中,得到相應的絕對值。
# 例項2def _int(x):
return int(x)
a=map(_int,['1','2','3','4','5'])
print(list(a))
>>> [1, 2, 3, 4, 5]
# 把字串轉化為數值。
# 例項3,利用map函式,把list中的元素變為首字母大寫,其他小寫的規範名字3、reduce函式def func(z):
i=1_str=""
for j in z:
if i==1:
_str=j.upper()
else:
_str+=j.lower()
i+=1
return _str
print(list(map(func,['adam', 'lisa', 'bart'])))
>>> ['adam', 'lisa', 'bart']
reduce函式就是對傳入的兩個引數進行運算,然後運算後的值作為下次引數的其中乙個。
reduce(function, sequence[, initial]) -> value
# 例項,計算1,2,3...9的和from functools import reduce
def _add(x,y):
return x+y
print(reduce(_add,[1,2,3,4,5,6,7,8,9]))
>>> 45
# 取出list 中的兩個數值,帶入_add 函式,計算出的結果作為下一次的乙個引數,直到計算完畢。
# 例項2,求 list [3, 5, 7, 9] 中的積零基礎入門Python3 函式詳解(3)
1 命名關鍵字引數 命名關鍵字引數在我看來,就是對關鍵字引數的乙個補充。怎麼說呢,關鍵字引數可以傳入任何的鍵 值,但是如果我們不想隨便的接收任何鍵 值,就可以使用命名關鍵字引數進行限制。建立的兩種方法 函式名 位參1,位參2,鍵1,鍵2.其中鍵1和鍵2都是命名關鍵字引數,定義的時候在前面加個 號 函...
最新python3完全零基礎入門(目前最新)
課程內容 計算機基礎常識 python語言概覽 安裝與執行 python 變數 資料型別及儲存 python 常用資料型別概覽 數值與字串 列表list 字典表dict 與元組 tuple 檔案與型別彙總 語句 表示式與if分支 迴圈語句 迭代函式定義與引數 函式與lambda表示式 函式應用與工具...
Python零基礎入門之函式
函式的命名空間和作用域 函式的三類命名空間 內建 全域性 區域性 兩大作用域 全域性 內建和全域性命名空間都屬於全域性作用域 區域性 區域性命名空間屬於區域性作用域 什麼是作用域鏈?就是由外而內的命名空間中的中的變數的生存週期都是就近原則 全域性作用域 大區域性作用域 小區域性作用域 函式的兩大引數...