Python漫谈(一)

本文探讨了Python中是否具备重载与重写的概念。通过对比Java等静态语言,解释了Python如何利用动态特性及参数灵活性来实现类似功能,并讨论了重写作为多态的一种体现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态强类型

Python是一种动态语言,即:在运行时才会检查变量的类型,变量类型不固定,变量类型等于他的值的类型,但是这并不意味着它是弱类型语言,因为弱类型语言是指对类型限制不强,存在类型隐式转换,比如C语言,虽然它是静态语言:变量类型固定,并且需要显示指定变量类型,但是它支持隐式类型转换,所以它是弱类型,而Python则不存在隐式类型转换,所以Python是一种:动态强类型语言


重载和重写

今天在看面向对象的特性的时候,想到之前有人问过这个问题,就是Python中是否有重载,当时突然发现从来没想过过这个问题,问这个问题的是个搞Java的,哈哈,如果只写过Python的一般是不知道重载的。

  • 重载(overload):在一个类中存在相同的函数名不同的参数类型或者不同参数个数的函数是为函数重载
  • 重写(overwrite):在子类中存在与父类函数相同的函数是为子类重写父类的函数,又叫:覆盖

那么它们是为了解决什么问题呢?

前者,重载是为了应对相同功能但参数类型和参数个数不同的情况,例如实现一个求绝对值的函数:abs,在Java这种静态语言中,int类型的参数需要定义为:

int abs(int a){
    ...
}

double abs(double a){
    ...
}

后者,重写是多态的一种表现,继承父类的函数并完成不同的实现。

那么Python中有重载和重写吗?

首先Python是一个动态语言,同时有默认参数、可选参数、关键字参数,这些特性,在语法层面解决了相同功能不同参数类型或者参数个数的情况:

def abs(a):
    if isinstance(a, int):
        ...
    elif isinstance(a, float):
        ...

因此Python并没有重载这个概念
而重写是多态的一种表现,作为面向对象的语言,Python是有重写的,在子类中实现父类的函数即是重写了父类的函数。


感受

未完,待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值