Python3.8函數定義使用(可變長參數,關鍵字和強制位置傳入參數)

2020-08-12 12:48:53

1.可變長參數

  • 一個*,*arg=元組
def f1(x, *arg):
    print(x)
    print(arg)
​
f1(1,2,3,4,5)

輸出
1
(2, 3, 4, 5)
  • 兩個*,**arg=字典
def f2(x, **arg):
    print(x)
    print(arg)
​
f2(1,a=2,b=3,c=4,d=5)

輸出
1
{'a': 2, 'b': 3, 'c': 4, 'd': 5}

2.關鍵字傳入參數和強制位置傳入參數

  • "/"的前面只能固定位置傳遞參數
  • "*"的後面只能關鍵字傳遞參數
def fun(x,y,/,z,*,m,n):
    print(x,y,z,m,n)
​
fun(1,2,z=3,m=4,n=5)
fun(1,2,3,m=4,n=5) # z位置和關鍵字都可以傳遞參數

輸出
1 2 3 4 5
1 2 3 4 5

fun(1,y=2,3,m=4,n=5) # x y只能固定位置傳遞參數
  File "<ipython-input-5-19e0b322824a>", line 1
    fun(1,y=2,3,m=4,n=5)
              ^
SyntaxError: positional argument follows keyword argument

fun(1,2,3,m=4,5) # m n只能關鍵字傳遞參數
  File "<ipython-input-6-518db50e8c31>", line 1
    fun(1,2,3,m=4,5)
                  ^
SyntaxError: positional argument follows keyword argument