摘要:一等函數(shù)在中,函數(shù)是一等對(duì)象。匿名函數(shù)關(guān)鍵字在表達(dá)式內(nèi)創(chuàng)建匿名函數(shù)然而,簡(jiǎn)單的句法限制了函數(shù)的定義體只能使用純表達(dá)式,即函數(shù)的定義體中不能賦值,不能使用等語(yǔ)句。匿名函數(shù)適合用于作為函數(shù)的參數(shù)
一等函數(shù)
在python中,函數(shù)是一等對(duì)象。編程語(yǔ)言理論家把“一等對(duì)象”定義為滿足以下條件的程序?qū)嶓w:
在運(yùn)行時(shí)創(chuàng)建
能賦值給變量或數(shù)據(jù)結(jié)構(gòu)中的元素
能作為參數(shù)傳給函數(shù)
能作為函數(shù)的返回結(jié)果
在python中,整數(shù)、字符串和字典都是一等對(duì)象,沒有什么特別之處。
標(biāo)題“一等函數(shù)”是“把函數(shù)視作一等對(duì)象”的簡(jiǎn)稱,雖然并不完美,但只是一種稱謂。
>>> def factorial(n): ... """returns n""" ... return 1 if n < 2 else n * factorial(n - 1) ... >>> factorial(42) 1405006117752879898543142606244511569936384000000000 >>> type(factorial)>>> fact = factorial >>> fact >>> fact(5) 120 >>> map(factorial, range(11))
程序中定義了一個(gè)階乘函數(shù) factorial, 其本身是一個(gè)遞歸函數(shù),可以理解為函數(shù)可以作為函數(shù)的返回值(的一部分),可以做正常運(yùn)算,也可以復(fù)制給另一個(gè)變量fact,也可以作為高等函數(shù)map 的一個(gè)參數(shù)。
高等函數(shù)接受函數(shù)作為參數(shù),或者把函數(shù)作為結(jié)果返回的函數(shù)是高等函數(shù)
python中常用的高等函數(shù)包括map, filter, sorted, reduce等等
>>> fruits = ["strawberry", "apple", "banana", "peach", "fig", "cherry"] >>> sorted(fruits) ["apple", "banana", "cherry", "fig", "peach", "strawberry"] >>> def reverse(word): ... return word[::-1] ... >>> reverse("testing") "gnitset" >>> sorted(fruits, key=reverse) ["banana", "apple", "fig", "peach", "strawberry", "cherry"]
sorted 是一個(gè)高級(jí)函數(shù),其可以接受函數(shù) reverse 作為參數(shù)
>>> from functools import reduce >>> from operator import add >>> reduce(add, range(100)) 4950 >>> sum(range(100)) 4950
從python3.0 起,reduce不再是內(nèi)置函數(shù),其作用被減弱,可輕易被替代。上例是計(jì)算0~99 的和。sum 和 reduce 的通用思想是把某個(gè)操作連續(xù)運(yùn)用到序列的元素上,累積計(jì)算,把一系列值規(guī)約成一個(gè)值。
匿名函數(shù)lambda關(guān)鍵字在python表達(dá)式內(nèi)創(chuàng)建匿名函數(shù)
然而,python簡(jiǎn)單的句法限制了 lambda 函數(shù)的定義體只能使用純表達(dá)式,即lambda 函數(shù)的定義體中不能賦值,不能使用while、try等python語(yǔ)句。
匿名函數(shù)適合用于作為函數(shù)的參數(shù)
>>> fruits ["strawberry", "apple", "banana", "peach", "fig", "cherry"] >>> sorted(fruits, key=lambda word: word[::-1]) ["banana", "apple", "fig", "peach", "strawberry", "cherry"]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/42239.html
摘要:調(diào)用函數(shù)時(shí)常見的錯(cuò)誤函數(shù)參數(shù)個(gè)數(shù)不正確會(huì)給我們返回,并給出確切的錯(cuò)誤信息。例如將變量名指向這個(gè)取整函數(shù)調(diào)用函數(shù),即調(diào)用這個(gè)取整數(shù)的函數(shù) python有許多內(nèi)置的函數(shù)(Build-in Functions)例如abs()——求絕對(duì)值的函數(shù)供我們使用。那么我們?nèi)绾握{(diào)用這些函數(shù)呢?直接書寫函數(shù)名帶括號(hào)并在括號(hào)內(nèi)傳入?yún)?shù)即可。例如abs(-10.2)即可。python內(nèi)置的函數(shù)可以到https...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說(shuō)明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來(lái)看這樣一個(gè)提問: pyth...
摘要:空函數(shù)如果想要定義一個(gè)什么都不做的函數(shù),那么可以用語(yǔ)句。為函數(shù)添加參數(shù)檢查我們對(duì)作一些改寫。此時(shí)調(diào)用函數(shù)時(shí)傳入錯(cuò)誤的參數(shù)則會(huì)拋出。函數(shù)返回多個(gè)值支持返回多個(gè)值。 python中定義函數(shù)的關(guān)鍵詞是def,例如定義一個(gè)叫my_function的函數(shù)我們可以這么定義, 其中括號(hào)內(nèi)的x,y為傳入的參數(shù)。 def my_function(): # function body 返回值 函數(shù)...
摘要:導(dǎo)語(yǔ)本文章匯總了本人在學(xué)習(xí)基礎(chǔ)之緒論篇數(shù)據(jù)結(jié)構(gòu)篇函數(shù)篇面向?qū)ο笃刂屏鞒唐驮幊唐獙W(xué)習(xí)筆記的鏈接,打算入門的朋友們可以按需查看并交流。 導(dǎo)語(yǔ):本文章匯總了本人在學(xué)習(xí)Python基礎(chǔ)之緒論篇、數(shù)據(jù)結(jié)構(gòu)篇、函數(shù)篇、面向?qū)ο笃?、控制流程篇和元編程篇學(xué)習(xí)筆記的鏈接,打算入門Python的朋友們可以按需查看并交流。 第一部分:緒論篇 1、Python數(shù)據(jù)模型 第二部分:數(shù)據(jù)結(jié)構(gòu)篇 2、序列構(gòu)成...
閱讀 1603·2021-11-18 10:02
閱讀 1792·2021-09-04 16:40
閱讀 3244·2021-09-01 10:48
閱讀 936·2019-08-30 15:55
閱讀 1950·2019-08-30 15:55
閱讀 1439·2019-08-30 13:05
閱讀 3096·2019-08-30 12:52
閱讀 1670·2019-08-30 11:24