1. 程式人生 > 其它 >python函式引數與類引數

python函式引數與類引數

python關於函式的一些應用

前言

鑑於python3與python2有些不同,看到某些程式碼時可能會感到疑惑,就稍微記錄一下。

一.不限制個數的函式引數

1.*args

以此為引數,會被python直譯器預設為元組引數,將輸入的若干個引數組織成元組型別。

def test_args(*args):#元組型別,tuple引數(*args)
    print(args)
    print(type(args))
    sum = 0
    for i in args:
        sum+=i
    return sum

test_args(1,2,3)

(1, 2, 3)
<class 'tuple'>
6

2.**kwargs

以此為引數會被解釋為字典引數,自動將其中輸入的若干個"key = value"引數組織成字典的形式:

#字典型別,dict引數(**kwargs)
def PrintDict(**kwargs):
    print(kwargs)
    print(type(kwargs))
    for key, value in kwargs.items():#items()用於字典
        print(f'{key}:{value}')

PrintDict(a=1, b=2, c=3, d=4)

{'a': 1, 'b': 2, 'c': 3, 'd': 4}
<class 'dict'>
a:1
b:2
c:3
d:4

二.關於類繼承的引數

1.class後的括號

class T1:
    def __init__(self):
        print("T1")
class T2():
    def __init__(self):
        print("T2")
T1(),T2()

上述兩種類的意義相同,都能成功建立一個簡單的類

T1
T2
(<main.T1 at 0x7fb201ad64f0>, <main.T2 at 0x7fb201ad6910>)

當然如果需要使用繼承,則必須使用括號

2.super函式的引數

使用super函式進行初始化時有兩種初始化方法
super().__init__()


super(inheritName, self).__init__()
其中inheritName是使用此類的名字:

class A(Base):
    def __init__(self):
        super(A, self).__init__()
        #等價於super().__init__()
石中之火,即使無可燃燒之物,也要盡力發亮