Function,表示子例程的一般性名詞。在某些編程語(yǔ)言中,它指帶返回值的子例程或語(yǔ)句。在一些編程語(yǔ)言中起著關(guān)鍵字的作用。
在Python中,function是非常重要而且常見的,一般獲取類或函數(shù)的參數(shù)信息。
在Python中,function一般有如下幾類:
一、POSITIONAL_OR_KEYWORD
如果沒有任何*的聲明,那么就是POSITIONAL_OR_KEYWORD類型的,如同語(yǔ)義一樣,POSITIONAL_OR_KEYWORD類型的參數(shù)可以通過位置POSITIONAL傳參調(diào)用,也可以過關(guān)鍵字KEYWORD傳參。以下是一個(gè)最簡(jiǎn)單的例子:
def foo(a): pass # 位置傳參調(diào)用 foo(1) # 關(guān)鍵字傳參調(diào)用 foo(a=1)
二、VAR_POSITIONAL
第二種是可變的位置參數(shù),通過一個(gè)*前綴來聲明,如果你看到一個(gè)*xxx的函數(shù)參數(shù)聲明(不是函數(shù)調(diào)用!聲明和調(diào)用是兩種不同的含義的),那一定是屬于VAR_POSITIONAL類型的,如同語(yǔ)義,這種類型的參數(shù)只能通過位置POSITIONAL傳參調(diào)用,不支持關(guān)鍵字KEYWORD傳參,在函數(shù)內(nèi)部,VAR_POSITIONAL類型的參數(shù)以一個(gè)元祖(tuple)顯示,有一點(diǎn)需要注意的,VAR_POSITIONAL類型可以不傳任何參數(shù)調(diào)用也不會(huì)報(bào)錯(cuò),而且只允許存在一個(gè)。以下是一個(gè)簡(jiǎn)單的例子:
def foo(*b): print(b) # 不傳參數(shù)不會(huì)報(bào)錯(cuò),參數(shù)值是一個(gè)空元祖 foo() # 結(jié)果是 () # 可以傳入任意個(gè)位置參數(shù)調(diào)用 foo(1, 2.0, '3', True) #結(jié)果是 (1, 2.0, '3', True)
三、KEYWORD_ONLY
第三種是關(guān)鍵字參數(shù),這種參數(shù)只會(huì)在VAR_POSITIONAL類型參數(shù)的后面而且不帶**前綴。如同語(yǔ)義,這類參數(shù)只能用關(guān)鍵字KEYWORD來傳參,不可以用位置傳參,因?yàn)槲恢脗鞯膮?shù)全讓前面的VAR_POSITIONAL類型參數(shù)接收完了,所以KEYWORD_ONLY只能通過關(guān)鍵字才能接收到參數(shù)值。以下是一個(gè)簡(jiǎn)單的例子:
# VAR_POSITIONAL不需要使用時(shí),可以匿名化 def foo(*, c): pass # 只能關(guān)鍵字傳參調(diào)用 foo(c=1)
四、VAR_KEYWORD
第四種是可變的關(guān)鍵字參數(shù),VAR_KEYWORD類型的參數(shù)通過**前綴來聲明(不是函數(shù)調(diào)用!聲明和調(diào)用是兩種不同的含義的)。如同語(yǔ)義,這種類型的參數(shù)只能通過關(guān)鍵字KEYWORD調(diào)用,但可以接收任意個(gè)關(guān)鍵字參數(shù),甚至是0個(gè)參數(shù),在函數(shù)內(nèi)部以一個(gè)字典(dict)顯示。VAR_KEYWORD類型的參數(shù)只允許有一個(gè),只允許在函數(shù)的最后聲名。以下是簡(jiǎn)單的例子:
def foo(**d): print(d) # 不傳參數(shù)不會(huì)報(bào)錯(cuò),參數(shù)值是一個(gè)空字典 foo() # 結(jié)果是 {} # 可以傳入任意個(gè)關(guān)鍵字參數(shù)調(diào)用 foo(a=1, b=2.0, c='3', d=True) # 結(jié)果是 {'d': True, 'c': '3', 'b': 2.0, 'a': 1}
五、POSITIONAL_ONLY
第五種是位置參數(shù),選擇最后說這個(gè),是因?yàn)樗稽c(diǎn)也不重要,屬于python的歷史產(chǎn)物,你無法在高版本的python中創(chuàng)建一個(gè)POSITIONAL_ONLY類型的參數(shù),在某種底層的內(nèi)置函數(shù)也許會(huì)使用這類型的參數(shù),但我試用inspect模塊也沒法正確識(shí)別它的命名,但在Ipython的??幫助下,還是能看到Init signature: dict(self, /, *args, **kwargs)這里的self就是位置參數(shù)POSITIONAL_ONLY了。相信我,你不會(huì)需要用到它的,現(xiàn)在python推薦用VAR_POSITIONAL來代替它。下面是一個(gè)綜合示例:
import inspect def foo(a, *b, c, **d): pass for name, parame in inspect.signature(foo).parameters.items(): print(name, ': ', parame.kind)
默認(rèn)參數(shù)
VAR類型不允許設(shè)置默認(rèn)參數(shù)
POSITIONAL_OR_KEYWORD和KEYWORD_ONLY可以自定義默認(rèn)參數(shù),而VAR_POSITIONAL和VAR_KEYWORD不允許自定義默認(rèn)參數(shù)的,因?yàn)閂AR_POSITIONAL的默認(rèn)參數(shù)是tuple()空元祖,而VAR_KEYWORD的默認(rèn)參數(shù)是dict()空字典。如果自定義了默認(rèn)參數(shù)的話,調(diào)用函數(shù)的時(shí)候可以不必傳參,如果默認(rèn)值是空的話,那就必須傳參數(shù)才能調(diào)用。
默認(rèn)參數(shù)的位置
POSITIONAL_OR_KEYWORD類型的默認(rèn)參數(shù)一定要放在后面,否則會(huì)報(bào)錯(cuò),KEYWORD_ONLY雖然沒有強(qiáng)制要求,因?yàn)槎际怯藐P(guān)鍵字傳參,誰(shuí)先誰(shuí)后都無所謂,但最好還是盡可能地放在后面吧。
默認(rèn)參數(shù)不默認(rèn)?
默認(rèn)參數(shù)絕對(duì)不能設(shè)置為可變類型(比如list, dict, set),如果你在函數(shù)內(nèi)改變了默認(rèn)參數(shù),下次再調(diào)用時(shí)它就不再是默認(rèn)值了。
正確的示例:
def foo(p1, p2=2.0, *, k1, k2=None): a_list = k2 or list() pass foo(1, k1='3')
以上是function是什么意思?的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

function是函數(shù)的意思,是一段具有特定功能的可重復(fù)使用的代碼塊,是程序的基本組成單元之一,可以接受輸入?yún)?shù),執(zhí)行特定的操作,并返回結(jié)果,其目的是封裝一段可重復(fù)使用的代碼,提高代碼的可重用性和可維護(hù)性。

MySQL.proc表的作用和功能詳解MySQL是一種流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開發(fā)者在使用MySQL時(shí)常常會(huì)涉及到存儲(chǔ)過程(StoredProcedure)的創(chuàng)建和管理。而MySQL.proc表則是一個(gè)非常重要的系統(tǒng)表,它存儲(chǔ)了數(shù)據(jù)庫(kù)中所有的存儲(chǔ)過程的相關(guān)信息,包括存儲(chǔ)過程的名稱、定義、參數(shù)等。在本文中,我們將詳細(xì)解釋MySQL.proc表的作用和功能

在本文中,我們將了解enumerate()函數(shù)以及Python中“enumerate()”函數(shù)的用途。什么是enumerate()函數(shù)?Python的enumerate()函數(shù)接受數(shù)據(jù)集合作為參數(shù)并返回一個(gè)枚舉對(duì)象。枚舉對(duì)象以鍵值對(duì)的形式返回。key是每個(gè)item對(duì)應(yīng)的索引,value是items。語(yǔ)法enumerate(iterable,start)參數(shù)iterable-傳入的數(shù)據(jù)集合可以作為枚舉對(duì)象返回,稱為iterablestart-顧名思義,枚舉對(duì)象的起始索引由start定義。如果我們忽

隨著互聯(lián)網(wǎng)的發(fā)展,SOA(面向服務(wù)的架構(gòu))已經(jīng)成為了當(dāng)今企業(yè)級(jí)系統(tǒng)中的一種重要的技術(shù)架構(gòu)。SOA架構(gòu)中的服務(wù)可以被重復(fù)使用、重組和擴(kuò)展,同時(shí)還能夠簡(jiǎn)化系統(tǒng)開發(fā)和維護(hù)的過程。PHP作為一種被廣泛使用的Web編程語(yǔ)言,也提供了一些用于實(shí)現(xiàn)SOA的函數(shù)庫(kù)。接下來,我們將詳細(xì)介紹如何在PHP中使用SOA函數(shù)。一、SOA的基本概念SOA是一種分布式系統(tǒng)開發(fā)的思想和架構(gòu)

clearstatcache()函數(shù)用于清除文件狀態(tài)緩存。PHP緩存以下函數(shù)返回的信息?stat()lstat()file_exists()is_writable()is_readable()is_executable()is_file()is_dir()filegroup()fileowner()filesize()filetype()fileperms()這樣做是為了提供更好的性能。語(yǔ)法voidclearstatecache()參數(shù)NA返回值clearstatcache(

Vue.use函數(shù)的用法和作用Vue是一款流行的前端框架,它提供了許多有用的功能和功能。其中之一就是Vue.use函數(shù),它可以讓我們?cè)赩ue應(yīng)用中使用插件。本文將介紹Vue.use函數(shù)的用法和作用,并且提供一些代碼示例。Vue.use函數(shù)的基本用法非常簡(jiǎn)單,只需在Vue實(shí)例化之前調(diào)用它,并傳入要使用的插件作為參數(shù)。下面是一個(gè)簡(jiǎn)單的示例://引入并使用插件

js函數(shù)function用法有:1、聲明函數(shù);2、調(diào)用函數(shù);3、函數(shù)參數(shù);4、函數(shù)返回值;5、匿名函數(shù);6、函數(shù)作為參數(shù);7、函數(shù)作用域;8、遞歸函數(shù)。

file_exists方法檢查文件或目錄是否存在。它接受要檢查的文件或目錄的路徑作為參數(shù)。以下是它的用途-當(dāng)您需要在處理之前知道文件是否存在時(shí),它非常有用。這樣,在創(chuàng)建新文件時(shí)使用此函數(shù)即可知道該文件是否已存在。語(yǔ)法file_exists($file_path)參數(shù)file_path-設(shè)置要檢查是否存在的文件或目錄的路徑。必需。返回file_exists()方法返回。如果文件或目錄存在,則返回TrueFalse,如果文件或目錄不存在示例讓我們看一個(gè)檢查“candidate.txt”文件和即使文件
