Python漫谈(一)

动态强类型

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是有重写的,在子类中实现父类的函数即是重写了父类的函数。


感受

未完,待续…

猜你喜欢

转载自blog.csdn.net/zhanghedong526/article/details/80331172