Python函數的七種參數類型 - 定位參數/預設參數/關鍵字參數(Keyword Argument)/僅限關鍵字參數(keyword-only argument)/*/*args/**kwargs - Python

Posted by: bart30508 | in Python | 2 weeks, 2 days ago |

Python函數中,常見會令人一頭霧水的特殊參數應該就屬args和*kwargs了。

今天就把所有可能會遇見的Python參數做一次整理,共七種,以後見到就不會再害怕了!

一, 定位參數

定位參數非常簡單,如下例,這種沒有什麼變化的參數,都屬於定位參數,如:

>>> def test(a,b):
    print(a-b)


>>> test(1,2)
3

但是!"定位"參數的定位很重要:

他表明了,呼叫函數時,Python是依照你給的"定位",去判斷參數對應什麼值。

如下例,test(1,2)並不等同於test(2,1):

>>> def test(a,b):
    print(a-b)

>>> test(1,2)
-1
>>> test(2,1)
1

二,預測參數

預設參數,就是一般參數有了預設值,就是預設參數,如:

>>> def test(a,b=5):
    print(a+b)


>>> test(0)
5

三, 關鍵字參數(Keyword Argument)

這不太算構成參數的一種方法,而是呼叫函數"如何代入參數"的一種方法,如:

>>> test(a=0) #指定了參數關鍵字a
5

四, 僅限關鍵字參數(keyword-only argument)

所謂僅限關鍵字參數就是,他只能通過關鍵字參數指定,它一定不會捕獲未命名的定位參數,如果沒有使用關鍵字參數,那就會報錯,如:

>>> def test(a,*,b):
    print(a-b)

>>> test(1,2)
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    test(1,2)
TypeError: test() takes 1 positional argument but 2 were given
>>> test(1,b=2)
-1

五,*

看到四,大概可以猜得出*參數是什麼用途了嗎?

沒錯,其用途,就是用來限定身後參數必須是僅限關鍵字參數(keyword-only argument) 。

六, *args

*代表此參數代表其實他是一個tuple,可以放入很多的參數,函數要使用時,可以迭代出來使用,如:

>>> def test(a,*nums,b):
    for c in nums:
        print(a+c-b)


>>> test(1,1,1,1,1,b=2)
0
0
0
0

由於args也帶有,所以其後面的參數,必須只能使用僅限關鍵字參數(keyword-only argument)

七,**kwargs

kwargs跟*args其實很像,只是kwargs代表的是dictionary

kw代表keyword,有key的tuple,那就是dict哩。

例:

>>> def test(a,b,**nums):
    print('v1+v2',a+b,nums,sep='=')


>>> test(1,2,v1=1,v2=2)
v1+v2=3={'v1': 1, 'v2': 2}

特別要注意的是,*kwargs一定要放在最後面,也是就是定位參數/預設參數/關鍵字參數/限定關鍵字參數/args 後面!

其他

參數大概就是這七種,然而上面還可以有很多變化阿,如:

*args混合**kwargs :

>>> def test(*args, **kwargs):
        print(args,kwargs,sep=';')

>>> test(1,2,3,4,a=1,b=2,c=3,d=4)
    (1, 2, 3, 4);{'a': 1, 'b': 2, 'c': 3, 'd': 4}

其他變化,舉一反三吧,大致上就是這些拉~

Reference:

https://skylinelimit.blogspot.com/2018/04/python-args-kwargs.html

https://www.books.com.tw/products/0010706172

Currently unrated
 or 

Subscribe

* indicates required

Recent Posts

Archive

2022
2021

Categories

Apache 1

Data Science 2

Dbfit 1

Design Pattern 1

Devops 3

DigitalOcean 1

Django 1

English 3

Excel 5

Flask 3

Git 1

HackMD 1

Heroku 1

Html/Css 1

Linux 4

Machine Learning 2

Manufacture 1

Mezzanine 18

Oracle 1

Postgresql 7

PowerBI 4

Powershell 4

Python 21

SEO 2

SQL Server 51

SQLite 1

Windows 1

database 8

work-experience 1

其他 1

自我成長 1

資料工程 1

Tags

SEO(1) Github(2) Title Tag(2) ML(1) 李宏毅(1) SQL Server(18) Tempdb(1) SSMS(1) Windows(1) 自我成長(2) Excel(1) python Flask(1) python(5) Flask(2)

Authors

bart30508 (146)

Feeds

RSS / Atom

Python函數的七種參數類型 - 定位參數/預設參數/關鍵字參數(Keyword Argument)/僅限關鍵字參數(keyword-only argument)/*/*args/**kwargs - Python

© COPYRIGHT 2011-2022. Max的文藝復興. ALL RIGHT RESERVED.