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__()
石中之火,即使无可燃烧之物,也要尽力发亮