python函式引數中單獨的

2021-09-27 11:49:07 字數 1287 閱讀 7038

python函式引數中單獨的*

python的可變引數*args和**kwargs是很常見的,但在別人的**中看到 函式引數中有個單獨的*,沒明白這個寫法有啥用,搜'函式引數 單獨的*' 之類的也找不到想要的結果。試也沒試出名堂來。。 知道了以後很簡單,都不想在這記錄了。。顯得我多菜。。(雖然可惜這是事實)算了 還是記錄一下吧,主要是方便人搜尋。

這個叫 命名關鍵字引數,搜這個結果就很多了。其作用是 限制關鍵字引數的名字,也就是除了位置引數,只接受*後面的 命名關鍵字引數

def test_func1(aa, bb, cc='hello'):

print('11111 ', aa)

print('22222 ', bb)

print('33333 ', cc)

def test_func2(aa, *, bb, cc='hello'):

print('11111 ', aa)

print('22222 ', bb)

print('33333 ', cc)

test_func1('haha', 'hehe', 'heihei')

11111 haha

22222 hehe

33333 heihei

test_func2('haha', 'hehe', 'heihei')

traceback (most recent call last):

file "", line 1, in test_func2('haha', 'hehe', 'heihei')

typeerror: test_func2() takes 1 positional argument but 3 were given

test_func2('haha', bb='hehe')

11111 haha

22222 hehe

33333 hello

test_func2('haha', bb='hehe', cc='heihei')

11111 haha

22222 hehe

33333 heihei

def test_func2(aa, *, bb, cc='hello'): 這樣定義後,就只能接受 bb='***', cc='***', 不能接受其他的命名關鍵字引數了。

如果已經有乙個可變引數,後面的命名關鍵字就不再需要乙個單獨的*了,如 def test_func3(aa, *args, bb, cc='hello'): 和 def test_func4(aa, **kwargs, bb, cc='hello'):

Python函式引數中的 ,

問題 python的函式定義中有兩種特殊的情況,即出現 的形式。如 def execute command self,args,options 等。解釋 用來傳遞任意個無名字引數,這些引數會乙個tuple的形式訪問。用來處理傳遞任意個有名字的引數,這些引數用dict來訪問。應用 的應用 def fu...

Python中的函式引數

python中的引數由於沒有特定的指示方式,所以傳遞引數時也可將其他函式作為引數傳入。傳遞格式 def fun name x,y,z 其中x,y,z都可作為其他函式的名稱 示例 def fun x,y,f return f x f y print fun 10,34,abs 結果 2.1 map函式...

python中函式的引數

python 中函式的引數分為四種 位置引數 預設引數 可變引數 關鍵字引數 命名關鍵字引數 顧名思義,與變數位置有關的引數,例 def power x return x x即在函式定義時給出引數的值,例 def power x,y 1 return x y注 預設引數必須指向不變物件 即傳入的是乙...