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