首先,关于python和java的区别:

1.Java有是通过方法名和方法列表来定义一个函数,python是通过方法名来定义一个函数(不允许方法名相同的函数存在)

2.java是通过定义多个相同方法名,不同参数列表的方式,来实现重载的。而python是通过缺省参数的形式,来解决方法重载的问题。

所以,从这方面来说,python和java的“重载”的实现,是不同的。

下面引用一段网上,关于“为什么python不支持类似java那样的函数重载”的问题答案:

------------下面引用原文-----------

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

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

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

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

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

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

作者:pansz
链接:https://www.zhihu.com/question/20053359/answer/14054112
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

关于python的“重载”的更多相关文章

  1. python运算符重载

    python运算符重载就是在解释器使用对象内置操作前,拦截该操作,使用自己写的重载方法. 重载方法:__init__为构造函数,__sub__为减法表达式 class Number: def __in ...

  2. python 的重载

    python 的重载主要包括方法重载和运算符重载.1.python 方法重载: 其他的语言一般对于方法重载的话,主要是根据参数的类型不同或者是数量不同来区分同名的方法.而python则比较特殊,它本身 ...

  3. Python 正确重载运算符

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica } 有些事情让我不安,比如运算符重载.我决定不支持运算符重载,这完全是个人 ...

  4. python运算符重载(二)

    一.基础知识 定义:当类中提供了某个特殊名称的方法,在该类的实例出现在它们相关的表达式时,Python自动调用它们 特性: 1.运算符重载让类拦截常规的Python运算. 2.类可重载所有Python ...

  5. 【Python】重载模块

    命令窗口中调试代码,往往需要重载模块已进行最新的代码调试. 主要有两种方式: 1. Python shell 窗口 reload(module) 2. ipython 窗口 %load_ext aut ...

  6. Python操作符重载总结&列表模型

    操作符重载 二元运算符 特殊方法 + __add__,__radd__ - __sub__,__rsub__ * __mul__,__rmul__ / __div__,__rdiv__,__trued ...

  7. python——操作符重载(重要)

    类可以重载python的操作符   旧认识:__X__的名字 是系统定义的名字:是python特殊方法专用标识.   操作符重载使我们的对象与内置的一样.__X__的名字的方法是特殊的挂钩(hook) ...

  8. python操作符重载

    操作符重载的魔术方法 操作符 方法 取反 即席 + __add__ __radd__ __iadd__ - __sub__ __rsub__ __isub__ * __mul__ __rmul__ _ ...

  9. Python 运算符重载

    https://www.cnblogs.com/hotbaby/p/4913363.html

随机推荐

  1. 4、CentOS6.5下安装php5.3

    操作系统:CentOS6.5 环境:Apache2.2安装成功.可查看:http://www.centoscn.com/image-text/install/2014/0505/2910.html M ...

  2. 阿里云部署Java web项目

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...

  3. kali linux中文输入法

    kali linux中文输入法 已经使用kali linux有一段时间来,越用越喜欢,真的奥! 最近又有宝宝问我kali linux的中文输入法,鉴于当初在坑里蹲了很长时间,还是记录一下吧! The ...

  4. Struts2 概述

    1. struts2应用在javaee三层结构中web层框架 2. struts2框架在struts1和webwork基础之上的发展全新的框架 3.struts2 解决的问题: 用户管理的crud操作 ...

  5. 【题解】Luogu P3901 数列找不同

    我博客中对莫队的详细介绍 原题传送门 不错的莫队练手题 块数就直接取sqrt(n) 对所有询问进行排序 排序第一关键词:l所在第几块,第二关键词:r的位置 考虑Ai不大,暴力开数组 add时如果加之后 ...

  6. Java1的内容(学期总结)

  7. 02: djangorestframework使用

    1.1 djangorestframework登录.认证和权限 1.认证与权限相关模块 # -*- coding: utf-8 -*- from django.utils import six fro ...

  8. python简说(六)判断

    非空即真,非0即真True '1' [1] {k-v}False '' None [] {}

  9. 《大话处理器》Cache一致性协议之MESI (转)

    原文链接:http://blog.csdn.net/muxiqingyang/article/details/6615199 Cache一致性协议之MESI 处理器上有一套完整的协议,来保证Cache ...

  10. 使用vim打造自己的python编辑器

    基础配置 vim的配置是在用户主目录下的 ~/.vimrc 文件中完成的,如果没有的话,需要自己新建一下: cd ~ touch .vimrc 首先做些简单的配置: set nocompatible ...