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