日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

python输出星号_Python的星号(*、**)的作用

發(fā)布時(shí)間:2023/12/10 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python输出星号_Python的星号(*、**)的作用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 函數(shù)的可變參數(shù)

當(dāng)函數(shù)的參數(shù)前面有一個(gè)星號(hào)*的時(shí)候表示這是一個(gè)可變的位置參數(shù),兩個(gè)星號(hào)**表示是可變的關(guān)鍵字參數(shù)。

#!env python

#coding=utf-8

#

def foo(*args, **kwarg):

for item in args:

print item

for k,v in kwarg.items():

print k,v

print 30*'='

if __name__ == '__main__':

foo(1, 2, 3, a=4, b=5)

foo(2, 3, a=4, b=5, c=1)

輸出如下:

lxg@web-Dev ~/station $ python test_param.py

1

2

3

a 4

b 5

==============================

2

3

a 4

c 1

b 5

==============================

這樣我們可以傳入任意個(gè)數(shù)的參數(shù)。

2. unpack參數(shù)

星號(hào)*把序列/集合解包(unpack)成位置參數(shù),兩個(gè)星號(hào)**把字典解包成關(guān)鍵字參數(shù)。下面通過(guò)示例來(lái)進(jìn)一步加深理解:

#!env python

#coding=utf-8

def foo(*args, **kwarg):

for item in args:

print item

for k,v in kwarg.items():

print k,v

print 30*'='

if __name__ == '__main__':

#foo(1, 2, 3, a=4, b=5)

#foo(2, 3, a=4, b=5, c=1)

v = (1, 2, 4)

v2 = [11, 15, 23]

d = {'a':1, 'b':12}

foo(v, d)

foo(*v, **d)

foo(v2, d)

foo(*v2, **d)

輸出如下:

lxg@web-Dev ~/station $ python test_param.py

(1, 2, 4)

{'a': 1, 'b': 12}

==============================

1

2

4

a 1

b 12

==============================

[11, 15, 23]

{'a': 1, 'b': 12}

==============================

11

15

23

a 1

b 12

==============================

上面的示例中如果v、v2、d沒(méi)有加星號(hào)那么就當(dāng)成了一個(gè)參數(shù)傳遞給了函數(shù),如果加了星號(hào)那么就會(huì)解包后傳遞給函數(shù)。foo(*d, **d)等價(jià)于foo(1, 2, 4, a=1, b=12)。

3. 幾個(gè)注意點(diǎn)

可變位置參數(shù)*args是一個(gè)元組,是不可修改的。

>>> def foo(*args):

... args[0] = 5

...

>>> foo(1, 2, 3)

Traceback (most recent call last):

File "", line 1, in

File "", line 2, in foo

TypeError: 'tuple' object does not support item assignment

>>> l = [1, 2, 3]

>>> foo(*l)

Traceback (most recent call last):

File "", line 1, in

File "", line 2, in foo

TypeError: 'tuple' object does not support item assignment

無(wú)論我們?cè)趺磦魅雲(yún)?shù),args都是一個(gè)tuple類型,不能進(jìn)行修改。

對(duì)于字典類型的如果只使用一個(gè)型號(hào)*那么傳入的只是字典的鍵。

>>> def foo2(*args, **kwarg):

... print args, kwarg

...

>>> d = {'a':1, 'b':2, 'c':3}

>>> foo2(*d)

('a', 'c', 'b') {}

>>> foo2(**d)

() {'a': 1, 'c': 3, 'b': 2}

總結(jié)

以上是生活随笔為你收集整理的python输出星号_Python的星号(*、**)的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。