python中有函数重载吗
python中没有函数重载
为了考虑为什么python不提供函数重载,首先我们要研究为什么需要提供函数重载。
函数重载主要是为了解决两个问题:
可变参数类型。
可变参数个数。
另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。
那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?
答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。
那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?
答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。
知识点补充:
假设你有一个函数connect,它有一个参数address,这个参数可能是一个字符串,也可能是一个元组。例如:
connect('123.45.32.18:8080') connect(('123.45.32.18', 8080))
你想在代码里面兼容这两种写法,于是你可能会这样写代码:
def connect(address): if isinstance(address, str): ip, port = address.split(':') elif isinstance(address, tuple): ip, port = address else: print('地址格式不正确')
到此这篇关于python中有函数重载吗的文章就介绍到这了,更多相关python函数重载详解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
python中有函数重载吗
python中没有函数重载 为了考虑为什么python不提供函数重载,首先我们要研究为什么需要提供函数重载. 函数重载主要是为了解决两个问题: 可变参数类型. 可变参数个数. 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数. 那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理? 答案是根本不需要处理,因为 python 可以接受任
-
C++语法中的函数重载和默认参数
C语言中没有函数重载 C++语言中有函数重载 函数名相同,参数个数不同.参数类型不同.参数顺序不同 例如下面就是函数重载 void sum(int a, int b){ cout << a+b << endl; } void sum(int a, double b){ cout << a+b << endl; } 返回值类型与函数重载无关 返回值类型与函数重载无关,下面代码不构成重载,编译会报错 //返回值类型与函数重载无关 int func(){ retu
-
如何利用饰器实现 Python 函数重载
目录 装饰器实现Python 函数重载 一.为什么 Python 中没有函数重载? 二.在 Python 中实现函数重载 三.把函数封装起来 四.构建虚拟的命名空间 五.使用装饰器作为钩子 六.从命名空间中找到正确的函数 七.实现函数的调用 八.运用函数重载 九.总结 装饰器实现Python 函数重载 函数重载指的是有多个同名的函数,但是它们的签名或实现却不同.当调用一个重载函数 fn 时,程序会检验传递给函数的实参/形参,并据此而调用相应的实现. int area(int length, in
-
在Python中实现函数重载的示例代码
假设你有一个函数connect,它有一个参数address,这个参数可能是一个字符串,也可能是一个元组.例如: connect('123.45.32.18:8080') connect(('123.45.32.18', 8080)) 你想在代码里面兼容这两种写法,于是你可能会这样写代码: def connect(address): if isinstance(address, str): ip, port = address.split(':') elif isinstance(address,
-
python中有帮助函数吗
python中的dir()函数是一个非常重要的函数,它可以帮助我们查看函数的功能和特性. 中文说明:不带参数时,返回当前范围内的变量.方法和定义的类型列表:带参数时,返回参数的属性.方法列表.如果参数包含方法__dir__(),该方法将被调用.如果参数不包含__dir__(),该方法将最大限度地收集参数信息. 参数object: 对象.变量.类型. 版本:该函数在python各个版本中都有,但是每个版本中显示的属性细节有所不同.使用时注意区别. 例如 >>>import struct &
-
JS函数重载的解决方案
在面向对象的编程中,很多语言都支持函数重载,能根据函数传递的不同个数.类型的参数来做不同的操作,JS对它却不支持,需要我们额外做些小动作. 在JS的函数执行上下文中有一个名为arguments的有意思的变量,它以数组的形式存储了函数执行时传递过来的所有参数,即使函数定义没有定义这 么多个形参.还有一个特别之处就是跟Array类型相比,arguments变量有且只有一个length属性,Array的方法,例如push.pop 等,它并不具备,它只是一个"伪数组":具有length属性,存
-
Python学习笔记整理3之输入输出、python eval函数
1. python中的变量: python中的变量声明不需要像C++.Java那样指定变量数据类型(int.float等),因为python会自动地根据赋给变量的值确定其类型.如 radius = 20,area = radius * radius * 3.14159 ,python会自动的将radius看成"整型",area看成"浮点型".所以编程时不用再像之前那样小心翼翼的查看数据类型有没有出错,挺人性化的. 2. input和print: 先贴个小的程序 #
-
python常用函数详解
1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多重复的代码,这样代码重用率就比较低...并且这样的代码维护起来也是很有难度的,为了解决这些问题,就出现了函数,用来将一些经常出现的代码进行封装,这样就可以在任何需要调用这段代码的地方调用这个函数就行了. 函数的定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 代码重用 保持一致性 可扩展性 2.函数的创建 在python中函数定义的格式如下: def
-
Python中操作符重载用法分析
本文实例讲述了Python中操作符重载用法.分享给大家供大家参考,具体如下: 类可以重载python的操作符 操作符重载使我们的对象与内置的一样.__X__的名字的方法是特殊的挂钩(hook),python通过这种特殊的命名来拦截操作符,以实现重载. python在计算操作符时会自动调用这样的方法,例如: 如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法.通过重载,用户定义的对象就像内置的一样. 在类中重载操作符 1.操作符重载使得类能拦截标准的python操作. 2.类可
-
C++ 中函数重载、覆盖与隐藏详解
C++ 中函数重载.覆盖与隐藏详解 在C++语言中,函数扮演着很重要的角色,不管面向过程设计,还是基于对象设计:不管是面向对象编程,还是基于泛型编程,函数都可以随处而见.在谈论C++中的函数重载.覆盖和隐藏之前,先回顾下函数的基础知识. 函数的声明包括函数的返回值类型,函数名称,参数列表(参数的类型.参数的个数.参数的顺序).例如,声明一个两个整数之和的函数,int iAdd(int iNum1,int iNum2);而函数的定义可以理解为对函数功能的详尽而准确的解说,通俗点,就是实现函数"ho
随机推荐
- 详解ASP.NET Core 中的框架级依赖注入
- Java实现字符串匹配(基于正则)
- 用Javascript实现UTF8编码转换成gb2312编码
- jQuery如何跳转到另一个网页 就这么简单
- JS实现本地存储信息的方法(基于localStorage与userData)
- Android中ViewPager带来的滑动卡顿问题解决要点解析
- Zend Framework入门教程之Zend_Session会话操作详解
- 让PHP支持页面回退的两种方法[转]
- 解析用PHP读写音频文件信息的详解(支持WMA和MP3)
- 用javascript对一个json数组深度赋值示例
- sqlserver 临时表 Vs 表变量 详细介绍
- SQLServer Execpt和not in 性能区别
- XP超级实用刻录技巧两则
- Spring Boot全局异常处理解析
- js阻止冒泡和默认事件(默认行为)详解
- C#实现中英文混合字符串截取的方法
- C# SendMail发送邮件功能实现
- 如何提高城域网路由器网络层的可靠性?
- springMVC拦截器HandlerInterceptor用法代码示例
- spring boot集成pagehelper(两种方式)