python2与python3的函数参数与类参数不同之处

python参数以及 python2与python3的函数参数与类参数不同之处

前言

鉴于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__()
posted @ 2021-11-21 15:10  石中火本火  阅读(355)  评论(2编辑  收藏  举报