在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python 函數參數分類

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-21 10:45 ? 次閱讀

今天給大家分享一下自己整理的一篇 Python 參數的內容,內容非常的干,全文通過案例的形式來理解知識點,自認為比網上 80% 的文章講的都要明白,如果你是入門不久的 python 新手,相信本篇文章應該對你會有不小的幫助。

接下來是正文。

1. 參數分類

函數,在定義的時候,可以有參數的,也可以沒有參數。

從函數定義的角度來看,參數可以分為兩種:

  1. 必選參數:調用函數時必須要指定的參數,在定義時沒有等號
  2. 可選參數:也叫默認參數,調用函數時可以指定也可以不指定,不指定就默認的參數值來。

例如下面的代碼中,a 和 b 屬于必選參數, c 和 d 屬于可選參數

def func(a,b,c=0, d=1):
    pass

從函數調用的角度來看,參數可以分為兩種:

  1. 關鍵字參數:調用時,使用 key=value 形式傳參的,這樣傳遞參數就可以不按定義順序來。
  2. 位置參數:調用時,不使用關鍵字參數的 key-value 形式傳參,這樣傳參要注意按照函數定義時參數的順序來。
def func(a,b,c=0, d=1):
    pass

  # 關鍵字參數傳參方法
func(a=10, c=30, b=20, d=40)

  # 位置參數傳參方法
func(10, 20, 30, 40)

最后還有一種非常特殊的參數,叫做可變參數

意思是參數個數可變,可以是 0 個或者任意個,但是傳參時不能指定參數名,通常使用 *args**kw 來表示:

  • *args:接收到的所有按照位置參數方式傳遞進來的參數,是一個元組類型
  • **kw :接收到的所有按照關鍵字參數方式傳遞進來的參數,是一個字典類型
def func(*args, **kw):
    print(args)
    print(kw)

func(10, 20, c=20, d=40)

輸出如下

(10, 20)
{'c': 20, 'd': 40}

2. 十一個案例

案例一 :在下面這個函數中, a 是必選參數,是必須要指定的

>> > def demo_func(a):
...     print(a)
... 
 >> > demo_func(10) 
10
 >> > demo_func()  # 不指定會報錯
Traceback (most recent call last):
  File "< stdin >", line 1, in < module >
TypeError: demo_func() missing 1 required positional argument: 'a'

案例二 :在下面這個函數中,b 是可選參數(默認參數),可以指定也可以不指定,不指定的話,默認為10

>> > def demo_func(b=10):
...     print(b)
... 
 >> > demo_func(20)
20
 >> > demo_func()
10

案例三 :在下面這個函數中, name 和 age 都是必選參數,在調用指定參數時,如果不使用關鍵字參數方式傳參,需要注意順序

>> > def print_profile(name, age):
...     return f"我的名字叫{name},今年{age}歲了"
...
 >> > print_profile("iswbm", 27)
'我的名字叫iswbm,今年27歲了'

如果參數太多,你不想太花精力去注意順序,可以使用關鍵字參數方式傳參,在指定參數時附上參數名,比如這樣:

>> > print_profile(age=27, name="iswbm")
'我的名字叫iswbm,今年27歲了'

案例四 :在下面這個函數中,args 參數和上面的參數名不太一樣,在它前面有一個 *,這就表明了它是一個可變參數,可以接收任意個數的不指定參數名的參數。

>> > def demo_func(*args):
...     print(args)
... 
 >> > 
 >> > demo_func(10, 20, 30)
(10, 20, 30)

案例五 :在下面這個函數中,kw 參數和上面的 *args 還多了一個 * ,總共兩個 ** ,這個意思是 kw 是一個可變關鍵字參數,可以接收任意個數的帶參數名的參數。

>> > def demo_func(**kw):
...     print(kw)
... 
 >> > demo_func(a=10, b=20, c=30)
{'a': 10, 'b': 20, 'c': 30}

案例六 :在定義時,必選參數一定要在可選參數的前面,不然運行時會報錯

>> > def demo_func(a=1, b):
...     print(a, b)
... 
  File "< stdin >", line 1
SyntaxError: non-default argument follows default argument
 >> >
 >> > def demo_func(a, b=1):
...     print(a, b)
... 
 >> >

案例七 :在定義時,可變位置參數一定要在可變關鍵字參數前面,不然運行時也會報錯

>> > def demo_func(**kw, *args):
  File "< stdin >", line 1
    def demo_func(**kw, *args):
                        ^
SyntaxError: invalid syntax
 >> > 
 >> > def demo_func(*args, **kw):
...     print(args, kw)
... 
 >> >

案例八 :可變位置參數可以放在必選參數前面,但是在調用時,必選參數必須要指定參數名來傳入,否則會報錯

>> > def demo_func(*args, b):
...     print(args)
...     print(b)
... 
 >> > demo_func(1, 2, 100)
Traceback (most recent call last):
  File "< stdin >", line 1, in < module >
TypeError: demo_func() missing 1 required keyword-only argument: 'b'
 >> > 
 >> > demo_func(1, 2, b=100)
(1, 2)
100

案例九 :可變關鍵字參數則不一樣,可變關鍵字參數一定得放在最后,下面三個示例中,不管關鍵字參數后面接位置參數,還是默認參數,還是可變參數,都會報錯。

>> > def demo_func(**kw, a):
  File "< stdin >", line 1
    def demo_func(**kw, a):
                        ^
SyntaxError: invalid syntax
 >> > 
 >> > def demo_func(**kw, a=1):
  File "< stdin >", line 1
    def demo_func(**kw, a=1):
                        ^
SyntaxError: invalid syntax
 >> > 
 >> > def demo_func(**kw, *args):
  File "< stdin >", line 1
    def demo_func(**kw, *args):
                        ^
SyntaxError: invalid syntax

案例十 :將上面的知識點串起來,四種參數類型可以在一個函數中出現,但一定要注意順序

def demo_func(arg1, arg2=10, *args, **kw):
    print("arg1: ", arg1)
    print("arg2: ", arg2)
    print("args: ", args)
    print("kw: ", kw)

試著調用這個函數,輸出如下:

>> > demo_func(1,12, 100, 200, d=1000, e=2000)
arg1:  1
arg2:  12
args:  (100, 200)
kw:  {'d': 1000, 'e': 2000}

案例十一 :使用單獨的 *,當你在給后面的位置參數傳遞時,對你傳參的方式有嚴格要求,你在傳參時必須要以關鍵字參數的方式傳參數,要寫參數名,不然會報錯。

>> > def demo_func(a, b, *, c):
...     print(a)
...     print(b)
...     print(c)
... 
 >> > 
 >> > demo_func(1, 2, 3)
Traceback (most recent call last):
  File "< stdin >", line 1, in < module >
TypeError: demo_func() takes 2 positional arguments but 3 were given
 >> > 
 >> > demo_func(1, 2, c=3)
1
2
3

3. 傳參的坑

函數參數傳遞的是實際對象的內存地址。如果參數是引用類型的數據類型(列表、字典等),在函數內部修改后,就算沒有把修改后的值返回回去,外面的值其實也已經發生了變化。

>> > def add_item(item, source_list):
...     source_list.append(item)
...
 >> > alist = [0,1]
 >> > add_item(2, alist)
 >> > alist
[0, 1, 2]
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85040
  • 函數參數
    +關注

    關注

    0

    文章

    6

    瀏覽量

    6008
  • key
    key
    +關注

    關注

    0

    文章

    51

    瀏覽量

    12860
收藏 人收藏

    評論

    相關推薦

    LOF算法的主要參數函數分別是什么

    LOF算法的思想是什么?LOF算法的主要參數函數分別是什么?
    發表于 09-10 06:43

    基于Python 函數基礎、參數以及高級用法的解析

    簡單地說,一個函數就是一組Python語句的組合,它們可以在程序中運行一次或多次運行。Python中的函數在其他語言中也叫做過程或子例程,那么這些被包裝起來的語句通過一個
    的頭像 發表于 02-01 15:53 ?4588次閱讀
    基于<b class='flag-5'>Python</b> <b class='flag-5'>函數</b>基礎、<b class='flag-5'>參數</b>以及高級用法的解析

    Python的Matplotlib函數匯總

    本文檔的主要內容詳細介紹的是Python的Matplotlib函數匯總免費下載。
    發表于 12-17 08:00 ?2次下載

    進階必備的68個Python 內置函數分

    來源: pypypypy 內置函數就是Python給你提供的,拿來直接用的函數,比如print.,input等。 截止到python版本3.6.2 ,
    的頭像 發表于 11-01 10:18 ?4140次閱讀

    Python入門之什么是函數

    Python函數比我們想象的更為靈活。由于Python函數是對象,所以函數對象可以賦值給其他的名字、傳遞給其他
    的頭像 發表于 02-21 14:24 ?528次閱讀

    python常用的內置函數和模塊

    python數字包含常用的內置函數和模塊,比如pow()、abs()、floor()、int()等函數,以及math、random等模塊。
    的頭像 發表于 03-10 10:10 ?989次閱讀

    Python函數詳解

    Python 中,函數是一段可重復使用的代碼塊,可以接受一些輸入(即函數參數),并根據輸入執行某些操作。函數可以幫助我們組織代碼、減少重
    的頭像 發表于 04-19 15:47 ?709次閱讀

    免費音頻傳輸函數分

    免費音頻傳輸函數分
    發表于 07-31 17:10 ?0次下載

    為什么Python沒有main函數?

    今天的文章中,我們來討論一下為什么有的編程語言有main函數,而Python為什么沒有main函數。
    發表于 08-17 11:47 ?346次閱讀

    python定義函數與調用函數的順序

    定義函數與調用函數的順序 函數被定義后,本身是不會自動執行的,只有在被調用后,函數才會被執行,得到相應的結果。但是在 Python 中我們要
    的頭像 發表于 10-04 17:17 ?1516次閱讀

    函數參數分類有哪些

    一、函數參數分類 函數參數分為兩類:形參 及 實參 形參:形參是在創建過程中聲明的參數,如果
    的頭像 發表于 11-14 11:13 ?2822次閱讀

    python如何定義一個函數

    一、Python3 函數 函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。 函數能提高應用的模塊性,和代碼的重復利用率。你已經知道
    的頭像 發表于 11-14 11:26 ?776次閱讀

    python函數返回多個參數

    函數是程序設計中的一個重要概念,在很多編程語言中都存在。函數可以接受輸入數據,并且根據輸入數據進行一系列操作,最后可以返回一個或多個結果。Python是一種非常流行的編程語言,也支持函數
    的頭像 發表于 11-21 16:37 ?1364次閱讀

    python調用math函數的方法

    中。本文將詳細介紹math模塊中的各種數學函數的調用方法,包括函數的功能、參數的使用和返回值的含義等方面,以幫助讀者更好地理解和應用這些函數。 一、導入math模塊 要使用math模塊
    的頭像 發表于 11-22 11:01 ?3162次閱讀

    不屬于python的內置函數

    Python是一種高級編程語言,它提供了許多內置函數,可以幫助開發人員更輕松地處理各種任務。但是,在Python中并非所有的函數都是內置函數
    的頭像 發表于 11-29 14:27 ?1582次閱讀
    主站蜘蛛池模板: 巨乳色网站 | 成年在线视频 | 国产黄色一级网站 | 在线色综合 | 日韩欧美印度一级毛片 | 经典三级第一页 | 毛片福利 | 色综合日韩 | seetube18日本第一次 | 伊人97在线| 甘婷婷一级毛片免费看 | 成人三级电影在线观看 | 午夜免费福利片观看 | 亚洲三级网址 | 欧美激情 在线 | 欧美猛性 | 激情综合色五月丁香六月亚洲 | 国产一级特黄在线视频 | 四虎国产在线观看 | 欧美一区二区三区成人看不卡 | 中文字幕亚洲一区二区三区 | 色综合天天色综合 | 国产a一级毛片午夜剧场14 | 日本免费网站观看 | www永久免费视频 | 国产一级特黄特色aa毛片 | 天天爽夜夜爽精品视频一 | 国产福利午夜自产拍视频在线 | 久久婷人人澡人人爽 | 国产超爽人人爽人人做 | 成人影院久久久久久影院 | 亚洲天堂首页 | 日本免费不卡一区 | 你懂的视频在线看 | 天天操夜夜噜 | 丁香婷婷色 | 你懂的免费在线 | 狠狠色噜噜狠狠狠狠五月婷 | 美女扒开尿口给男人爽的视频 | 中国一级特黄剌激爽毛片 | 看黄在线观看 |