python中 和 python中的 和 的用途

2021-10-11 03:03:06 字數 2489 閱讀 1871

def function_with_one_star(*t):

print(t, type(t))

def function_with_two_stars(**d)

print(d, type(d))

上面定義了兩個函式,分別用了帶乙個星號和兩個星號的引數,它們是什麼意思,執行下面的**:

function_with_one_star(1, 2, 3)

function_with_two_stars(a = 1, b = 2, c = 3)

結果如下

(1, 2, 3) 

由此可見,帶乙個星號(*)引數的函式傳入的引數儲存為乙個元組(tuple);

而帶兩個星號(*)引數的函式傳入的引數則儲存為乙個字典(dict),並且在

呼叫是採取 a = 1, b = 2, c = 3 的形式。

由於傳入的引數個數不定,所以當與普通引數一同使用時,必須把帶星號的參

數放在最後。

函式在定義中,通過在引數前加星號,將傳遞進來的多個引數轉化為乙個物件,元組或字典,可以說是將這些引數值收集起來。

引數前加乙個星號,表明將所有的值放在同乙個元組中,該引數的返回值是乙個元組。

引數前加兩個星號,表明將所有的值放在同乙個字典中,該引數的返回值是乙個字典。

位置引數

在引數名之前使用乙個星號,就是讓函式接受任意多的位置引數。

>>> def multiply(*args):

...     total = 1

...     for arg in args:

...         total *= arg

...     return total

>>> multiply(2, 3)

>>> multiply(2, 3, 4, 5, 6)

python把引數收集到乙個元組中,作為變數args。顯式宣告的引數之外如果沒有位置引數,這個引數就作為乙個空元組。

關鍵字引數

python在引數名之前使用2個星號來支援任意多的關鍵字引數。

>>> def accept(**kwargs):

...     for keyword, value in kwargs.items():

...         print "%s => %r" % (keyword, value)

>>> accept(foo='bar', spam='eggs')

foo => 'bar'

spam => 'eggs'

混合引數型別

任意的位置引數和關鍵字引數可以和其他標準的引數宣告一起使用。混合使用時要加些小心,因為python中他們的次序是重要的。引數歸為4類,不是所有的類別都需要。他們必須按下面的次序定義,不用的可以跳過。

1)必須的引數

2)可選的引數

3)過量的位置引數

4)過量的關鍵字引數

def complex_function(a, b=none, *c, **d):

這個次序是必須的,因為*args和**kwargs只接受那些沒有放進來的其他任何引數。沒有這個次序,當你呼叫乙個帶有位置引數的函式,python就不知道哪個值是已宣告引數想要的,也不知道哪個被作為過量引數對待。

也要注意的是,當函式能接受許多必須的引數和可選的引數,那它只要定義乙個過量的引數型別即可。

傳遞引數集合

除了函式能接受任意引數集合,python**也可以呼叫帶有任意多數量的函式,像前面說過的用星號。這種方式傳遞的引數由python擴充套件成為引數列表。以便被呼叫的函式

不需要為了這樣呼叫而去使用過量引數。python中任何可呼叫的,都能用這種技法來呼叫。並且用相同的次序規則和標準引數一起使用。

>>> def add(a, b, c):

...     return a + b + c

>>> add(1, 2, 3)

>>> add(a=4, b=5, c=6)

>>> args = (2, 3)

>>> add(1, *args)

>>> kwargs=

>>> add(a=7, **kwargs)

>>> add(a=7, *args)

traceback (most recent call last):

file "", line 1, in

typeerror: add() got multiple values for keyword argument 'a'

>>> add(1, 2, a=7)

traceback (most recent call last):

file "", line 1, in

typeerror: add() got multiple values for keyword argument 'a'

注意這個例子的最後幾行,特別留意當傳遞乙個元組作為過量的位置引數時,是否要顯式的傳遞關鍵字引數。因為python使用次序規則來擴充套件過量的引數,那位置引數要放在前面。這個例子中,最後兩個呼叫是相同的,python不能決定那個值是給a的。

Python中 和 的區別

python中,會把接收到的引數形成乙個元組,而 則會把接收到的引數存入乙個字典 我們可以看到,foo方法可以接收任意長度的引數,並把它們存入乙個元組中 deffoo args print args foo fruit animal human fruit animal human foo 1,2,...

python中 和 的區別

通常c c 中,算術運算子的計算結果是根據參與運算的兩邊的資料決定的,比如 6 3 2 6,3都是整數,那麼結果也就是整數2 6.0 3.0 2.0 6.0,3.0是浮點數,那麼結果也是浮點數2.0,跟精確的說,只要 兩邊有乙個數是浮點數,那麼結果就是浮點數。在python2.2版本以前也是這麼規定...

python中 和 的用法

1 表示乘號 2 表示倍數,例如 def t msg,time 1 print msg time t hi 3 列印結果 列印3次 hi hi hi 3 單個 1 如 parameter是用來接受任意多個引數並將其放在乙個元組中。def demo p print p demo 1,2,3 1,2,3...