0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python函數(shù)形參的分類(lèi)

麥辣雞腿堡 ? 來(lái)源:Python都知道 ? 作者:了不起 ? 2023-11-14 11:19 ? 次閱讀

形參的分類(lèi)

形參的分類(lèi)可以分為六種:

  • 帶有默認(rèn)值的位置形參
  • 不帶默認(rèn)值的位置形參
  • 帶有默認(rèn)值的關(guān)鍵字形參
  • 不帶默認(rèn)值的關(guān)鍵字形參
  • 可變長(zhǎng)度的位置形參
  • 可變長(zhǎng)度的關(guān)鍵字形參

實(shí)例:

def fn(a,b,c=10,*,d,e=20,**kwargs)

1、帶及不帶默認(rèn)值的位置形參

實(shí)例中,在 * 號(hào)之前統(tǒng)稱(chēng)為位置形參,位置形參可以由位置實(shí)參及關(guān)鍵字實(shí)參進(jìn)行傳值。

不帶默認(rèn)值的位置形參:不帶有默認(rèn)值的位置形參必須要實(shí)參進(jìn)行傳值,如果實(shí)參不傳值就會(huì)報(bào)錯(cuò)

帶有默認(rèn)值的位置形參:帶有默認(rèn)值的關(guān)鍵字位置實(shí)參可以用實(shí)參進(jìn)行傳值,也可以不使用實(shí)參進(jìn)行傳值,不使用實(shí)參進(jìn)行傳值時(shí),使用默認(rèn)值作為其值

2、帶有及不帶默認(rèn)值的關(guān)鍵字形參

實(shí)例中 * 以后的參數(shù)都是關(guān)鍵字形參,在使用關(guān)鍵字形參時(shí),必須使用關(guān)鍵字實(shí)參進(jìn)行傳值,不使用會(huì)報(bào)錯(cuò)

不帶默認(rèn)值的關(guān)鍵字形參:不帶有默認(rèn)值的關(guān)鍵字形參必須使用關(guān)鍵字實(shí)參進(jìn)行傳值,如果不傳參數(shù)就會(huì)報(bào)錯(cuò)

帶有默認(rèn)值的關(guān)鍵字形參:帶有默認(rèn)值的關(guān)鍵字形參可以用關(guān)鍵字實(shí)參進(jìn)行傳值,也可以不傳值,不傳值時(shí)使用默認(rèn)值作為其值。

3、可變長(zhǎng)度的形參:

可變長(zhǎng)度位置形參:

  • 其位置在位置形參及關(guān)鍵字形參之間,當(dāng)傳入的位置實(shí)參數(shù)量多于位置形參時(shí),多出部分的位置形參會(huì)全部存儲(chǔ)在可變長(zhǎng)度的位置形參中
  • 可變長(zhǎng)度的關(guān)鍵字形參就是例子中的 * ,只是給這個(gè)形參添加了一個(gè)名字,這個(gè)名字可以自定義,但是約定俗成的命名為 *args

可變長(zhǎng)度的關(guān)鍵字形參:

  • 可變長(zhǎng)度的關(guān)鍵字形參位于參數(shù)列表的末尾,當(dāng)傳入的關(guān)鍵字實(shí)參多與關(guān)鍵字形參時(shí),多出的部分就會(huì)被儲(chǔ)存在可變長(zhǎng)度的關(guān)鍵字形參中,以元組進(jìn)行存儲(chǔ)
  • 可變長(zhǎng)度的關(guān)鍵字形參使用 ** 進(jìn)行表示,此時(shí)也需要給關(guān)鍵字形參添加一個(gè)名字,這個(gè)名字可以自定義,但是約定俗成的稱(chēng)為 **kwargs,以字典進(jìn)行存儲(chǔ)

形參聲明時(shí),其聲明順序是有規(guī)定的,順序?yàn)椋?/p>

無(wú)默認(rèn)值位置形參 --> 有關(guān)鍵字位置形參 --> 可變長(zhǎng)度的位置形參 --> 無(wú)默認(rèn)值的關(guān)鍵字形參 --> 有默認(rèn)值的關(guān)鍵字形參 --> 可變長(zhǎng)度的關(guān)鍵字形參

常用的參數(shù)列表類(lèi)型:

-- (*args,**kwargs)

-- (a,*args)
-- (a,b=10,**kwargs)
        
-- (a,*,b,**kwargs)
-- (a,*args,b,**kwargs)

在使用形參時(shí)要按照位置進(jìn)行傳參,即使是有關(guān)鍵字也要盡量按照位置進(jìn)行傳參,這樣更加清晰

打散機(jī)制

在使用可變長(zhǎng)形參時(shí),當(dāng)傳入的值多余需要的值時(shí)會(huì)把多余的參數(shù)放進(jìn)可變長(zhǎng)位置形參 及 可變長(zhǎng)關(guān)鍵字形參,但是如果直接傳入一個(gè)元組及字典中如何直接將其變?yōu)樵M及字典呢?

此時(shí)需要使用 *** 的打散機(jī)制*單列容器 會(huì)打散單列容器

**雙列容器 會(huì)打散雙列容器

print(*(a,b,c))  --- >  (a b c)
print(**{a:1,b:2})  --- > {a:1,b:2}
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    函數(shù)的幾種用法(3)#Python

    參數(shù)函數(shù)python
    未來(lái)加油dz
    發(fā)布于 :2023年08月24日 17:56:45

    函數(shù)的實(shí)參與

    。函數(shù)定義中指定的,在未發(fā)生函數(shù)調(diào)用時(shí)不占內(nèi)存,只有
    發(fā)表于 10-18 20:15

    函數(shù),在使用函數(shù)時(shí),為什么為變化?

    例如:void delay(uint z){uint x, y;for(x = z; x > 0; x--)for(y = 110; y > 0; y--);}我在調(diào)試時(shí),觀察X和Z的變化情況,發(fā)現(xiàn)z和x的值相同,然后做相同的變化。為什么也會(huì)發(fā)生變化?
    發(fā)表于 08-19 14:13

    stm32庫(kù)函數(shù)查錯(cuò)功能

    的STM32庫(kù)函數(shù)中,對(duì)于其提供了查錯(cuò)機(jī)制。如下示例是我們常用的GPIO初始化函數(shù),在函數(shù)的一開(kāi)始就使用assert_param(x)對(duì)
    發(fā)表于 09-11 10:09

    函數(shù)為volatile類(lèi)型,這個(gè)有什么意義?

    ((HAL_GetTick() - tickstart) < Delay){}}這是用STM32CubeMX生成的帶操作系統(tǒng)工程里面的一個(gè)函數(shù),如何理解Delay前面的__IO,還望各路高手指導(dǎo)。
    發(fā)表于 11-23 16:44

    為什么28035的cla調(diào)用子函數(shù),當(dāng)超過(guò)2個(gè)的話,cla 就無(wú)法調(diào)用子函數(shù)?這是什么原因?

    本帖最后由 一只耳朵怪 于 2018-6-14 08:50 編輯 為什么28035的cla調(diào)用子函數(shù),當(dāng)超過(guò)2個(gè)的話,cla 就無(wú)法調(diào)用子函數(shù)
    發(fā)表于 06-13 08:25

    請(qǐng)問(wèn)CC2541用IAR調(diào)試時(shí)函數(shù)和實(shí)參不一樣該怎么辦?

    IAR 9.30.1調(diào)試CC2541的BLE工程時(shí)出現(xiàn)函數(shù)調(diào)用和實(shí)參不一致的問(wèn)題。
    發(fā)表于 11-11 10:42

    C語(yǔ)言總結(jié)_數(shù)組與函數(shù)練習(xí)題

    字符串標(biāo)準(zhǔn)處理函數(shù)介紹(string.h)、指針和數(shù)組當(dāng)做函數(shù),指針定義、函數(shù)返回指針、void類(lèi)型定義指針、類(lèi)型強(qiáng)制轉(zhuǎn)換、常量聲明、e
    的頭像 發(fā)表于 08-14 09:36 ?798次閱讀

    C語(yǔ)言-函數(shù)的可變形(不定形)

    這篇文章介紹C語(yǔ)言函數(shù)的不定參數(shù)、可變參數(shù) ,實(shí)現(xiàn)printf一樣的傳效果。
    的頭像 發(fā)表于 08-14 09:58 ?2547次閱讀

    C語(yǔ)言-指針作為函數(shù)類(lèi)型

    C語(yǔ)言函數(shù)里最常用就是指針傳和返回地址,特別是字符串處理中,經(jīng)常需要封裝各種功能函數(shù)完成數(shù)據(jù)處理。
    的頭像 發(fā)表于 08-14 10:05 ?1798次閱讀

    數(shù)組/指針的傳問(wèn)題

    自定義函數(shù)的類(lèi)型,要和函數(shù)調(diào)用中傳過(guò)去的實(shí)參類(lèi)型相對(duì)應(yīng)
    的頭像 發(fā)表于 08-17 10:37 ?1049次閱讀

    指針進(jìn)階第五站:函數(shù)指針!

    定義一個(gè)函數(shù)指針,指向的函數(shù)有兩個(gè)int并且返回一個(gè)函數(shù)指針,返回的指針指向一個(gè)有一個(gè)int
    發(fā)表于 08-17 15:58 ?514次閱讀

    C語(yǔ)言函數(shù)參數(shù)介紹

    C語(yǔ)言數(shù)組元素作函數(shù)實(shí)參 數(shù)組元素可以用作函數(shù)實(shí)參,不能用作。 C語(yǔ)言在用數(shù)組元素作函數(shù)實(shí)參時(shí),把實(shí)參的值傳給
    的頭像 發(fā)表于 03-10 14:30 ?2270次閱讀

    Python 函數(shù)參數(shù)分類(lèi)

    文章應(yīng)該對(duì)你會(huì)有不小的幫助。 接下來(lái)是正文。 1. 參數(shù)分類(lèi) 函數(shù),在定義的時(shí)候,可以有參數(shù)的,也可以沒(méi)有參數(shù)。 從函數(shù)定義的角度來(lái)看,參數(shù)可以分為兩種: 必選參數(shù) :調(diào)用函數(shù)時(shí)必須要
    的頭像 發(fā)表于 10-21 10:45 ?662次閱讀

    函數(shù)參數(shù)的分類(lèi)有哪些

    一、函數(shù)參數(shù)的分類(lèi) 函數(shù)的參數(shù)分為兩類(lèi): 及 實(shí)參
    的頭像 發(fā)表于 11-14 11:13 ?2476次閱讀