Python中 和 的區別

2021-08-23 12:06:19 字數 2138 閱讀 3746

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 ...