zoukankan      html  css  js  c++  java
  • Python不支持函数重载

    函数重载与Python:

    函数重载的好处就是不用为了不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数和数据类型可以不同。调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。在静态语言中,方法重载是希望类可以以统一的方式处理不同类型的数据提供了可能。而在动态语言中,有鸭子类型,即如果走起来像鸭子,叫起来也像鸭子,那么它就是鸭子。一个对象的特征不是由它的类型决定,而是通过对象中的方法决定,所以函数重载在动态语言中就显得没有意义了。

    为了考虑为什么 python 不提供函数重载,首先我们要研究为什么需要提供函数重载。

    函数重载主要是为了解决两个问题。
    1。可变参数类型。
    2。可变参数个数。

    另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。

    好吧,那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。

    那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。

    好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。


    以上引自知乎:http://www.zhihu.com/question/20053359
    人生苦短,何不用python
  • 相关阅读:
    Window Phone 8手电筒
    Wp检查手机网络状态
    Wp 导航到手机定位设置页面
    Wp8 读取手机信息
    移动端丨-webkit-overflow-scrolling:touch属性导致页面卡住
    小程序丨canvas内容自适应不同尺寸屏幕
    钉钉自带浏览器版本过低,导致Object.assign不兼容...
    HTTP中GET与POST的区别
    git丨Push rejected: Push to origin/master was rejected
    小程序丨嵌套循环
  • 原文地址:https://www.cnblogs.com/yqpy/p/8555980.html
Copyright © 2011-2022 走看看