python中,(*)會把接收到的引數形成乙個元組,而(**)則會把接收到的引數存入乙個字典
我們可以看到,foo方法可以接收任意長度的引數,並把它們存入乙個元組中
>>>
deffoo
(*args):
... print(args)
...>>> foo("fruit", "animal", "human")
('fruit', 'animal', 'human')
>>> foo(1, 2, 3, 4, 5)
(1, 2, 3, 4, 5)
>>> arr = [1, 2, 3, 4, 5]
>>> foo(arr)
([1, 2, 3, 4, 5],)
# 如果我們希望將乙個陣列形成元組,需要在傳入引數的前面 加上乙個*
>>> foo(*arr)
(1, 2, 3, 4, 5)
(**)將接收到的引數存入乙個字典
>>> def foo(**kwargs):
...for key, value in kwargs.items():
... print("%s=%s" % (key, value))
...>>> foo(a=1, b=2, c=3)
a=1b=2
c=3
(*)和(**)一起使用
>>> def foo(*args, **kwargs):
... print("args:", args)
... print("kwargs:", kwargs)
...>>> foo(1, 2, 3, a=1, b=2)
args: (1, 2, 3)
kwargs:
>>> arr = [1, 2, 3]
>>> foo(*arr, a=1, b=2)
args: (1, 2, 3)
kwargs:
name作為foo第乙個引數,在呼叫foo(「hello」, 1, 2, 3, middle=」world」, a=1, b=2, c=3)方法時,自然而然捕獲了hello,而middle必須經過指定關鍵字引數才可以捕獲值,否則會和之前的引數一樣形成乙個元組
>>> def foo(name, *args, middle=none, **kwargs):
... print("name:", name)
... print("args:", args)
... print("middle:", middle)
... print("kwargs:", kwargs)
...>>> foo("hello", 1, 2, 3, a=1, b=2, c=3)
name: hello
args: (1, 2, 3)
middle: none
kwargs:
>>> foo("hello", 1, 2, 3, middle="world", a=1, b=2, c=3)
name: hello
args: (1, 2, 3)
middle: world
kwargs:
>>> my_foo =
>>> foo(**my_foo)
name: hello
args: ()
middle: world
kwargs:
此外,我們還可以定義乙個字典my_foo,並以foo(**my_foo)這樣的方式,讓name和middle各自捕獲自己的值,沒有捕獲的則存入乙個字典
當我們刪除my_foo中的name,再像之前傳入函式,函式會報錯說需要name這個引數
>>>
del my_foo["name"]
>>> foo(**my_foo)
traceback (most recent call last):
file "", line 1, in
typeerror: foo() missing 1 required positional argument: 'name'
python中 和 的區別
通常c c 中,算術運算子的計算結果是根據參與運算的兩邊的資料決定的,比如 6 3 2 6,3都是整數,那麼結果也就是整數2 6.0 3.0 2.0 6.0,3.0是浮點數,那麼結果也是浮點數2.0,跟精確的說,只要 兩邊有乙個數是浮點數,那麼結果就是浮點數。在python2.2版本以前也是這麼規定...
Python中 和 is 的區別
python中一切皆為物件 python中物件包含三要素 id 身份唯一標識 type 物件的型別 value 物件的值 is 和 的區別 在日常開發中,經常用 is 和 對兩個物件進行比較,那兩者的區別在哪呢?is 比較的是兩物件的id是否相等,即兩物件是否指向同一塊記憶體空間 而 是判斷兩物件的...
Python中 和 的區別
和.表示式 的意思很好理解,就是單個字元匹配任意次,即貪婪匹配。表示式 是滿足條件的情況只匹配一次,即懶惰匹配 coding utf8 import re pattern 1 re.compile 1 9 d 一兩二三四五六七 十 百 千 公尺.pattern 2 re.compile 1 9 d ...