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 @   石中火本火  阅读(366)  评论(2编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示