广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中为什么没有函数重载
  • 231
分享到

Python中为什么没有函数重载

2023-06-01 22:06:36 231人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“python中为什么没有函数重载”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中为什么没有函数重载”吧!题目:Python中为什么没有函数重载?点评:c++、Jav

本篇内容主要讲解“python中为什么没有函数重载”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python中为什么没有函数重载”吧!

题目:Python中为什么没有函数重载?

点评:c++、Java、C#等诸多编程语言都支持函数重载,所谓函数重载指的是在同一个作用域中有多个同名函数,它们拥有不同的参数列表(参数个数不同或参数类型不同或二者皆不同),可以相互区分。重载也是一种多态性,因为通常是在编译时通过参数的个数和类型来确定到底调用哪个重载函数,所以也被称为编译时多态性或者叫前绑定。这个问题的潜台词其实是问面试者是否有其他编程语言的经验,是否理解Python是动态类型语言,是否知道Python中函数的可变参数、关键字参数这些概念。

首先Python是解释型语言,函数重载现象通常出现在编译型语言中。其次Python是动态类型语言,函数的参数没有类型约束,也就无法根据参数类型来区分重载。再者Python中函数的参数可以有默认值,可以使用可变参数和关键字参数,因此即便没有函数重载,也要可以让一个函数根据调用者传入的参数产生不同的行为。

题目012:用Python代码实现Python内置函数max。

点评:这个题目看似简单,但实际上还是比较考察面试者的功底。因为Python内置的max函数既可以传入可迭代对象找出最大,又可以传入两个或多个参数找出最大;最为关键的是还可以通过命名关键字参数key来指定一个用于元素比较的函数,还可以通过default命名关键字参数来指定当可迭代对象为空时返回的默认值。

下面的代码仅供参考:

def my_max(*args, key=None, default=None):
   """
   获取可迭代对象中最大的元素或两个及以上实参中最大的元素
   :param args: 一个可迭代对象或多个元素
   :param key: 提取用于元素比较的特征值的函数,默认为None
   :param default: 如果可迭代对象为空则返回该默认值,如果没有给默认值则引发ValueError异常
   :return: 返回可迭代对象或多个元素中的最大元素
   """
   if len(args) == 1 and len(args[0]) == 0:
       if default:
           return default
       else:
           raise ValueError('max() arg is an empty sequence')
   items = args[0] if len(args) == 1 else args
   max_elem, max_value = items[0], items[0]
   if key:
       max_value = key(max_value)
   for item in items:
       value = item
       if key:
           value = key(item)
       if value > max_value:
           max_elem, max_value = item, value
   return max_elem

题目013:写一个函数统计传入的列表中每个数字出现的次数并返回对应的字典。

点评:送人头的题目,不解释。

def count_letters(items):
   result = {}
   for item in items:
       if isinstance(item, (int, float)):
           result[item] = result.get(item, 0) + 1
   return result

也可以直接使用Python标准库中collections模块的Counter类来解决这个问题,Counter是dict的子类,它会将传入的序列中的每个元素作为键,元素出现的次数作为值来构造字典。

from collections import Counterdef count_letters(items):
   counter = Counter(items)
   return {key: value for key, value in counter.items() \
           if isinstance(key, (int, float))}

题目014:使用Python代码实现遍历一个文件夹的操作。

Python标准库os模块的walk函数提供了遍历一个文件夹的功能,它返回一个生成器。可以通过这个生成器来获得文件夹下所有的文件和文件夹。

import os

g = os.walk('/Users/Hao/Downloads/')
for path, dir_list, file_list in g:
   for dir_name in dir_list:
       print(os.path.join(path, dir_name))
   for file_name in file_list:
       print(os.path.join(path, file_name))

说明:os.path模块提供了很多进行路径操作的工具函数,在项目开发中也是经常会用到的。 如果题目明确要求不能使用os.walk函数,那么可以使用os.listdir函数来获取指定目录下的文件和文件夹,然后再通过循环遍历用os.isdir函数判断哪些是文件夹,对于文件夹可以通过递归调用进行遍历,这样也可以实现遍历一个文件夹的操作。

题目015:现有2元、3元、5元共三种面额的货币,如果需要找零99元,一共有多少种找零的方式?

点评:还有一个非常类似的题目:“一个小朋友走楼梯,一次可以走1个台阶、2个台阶或3个台阶,问走完10个台阶一共有多少种走法?”,这两个题目的思路是一样,如果用递归函数来写的话非常简单。

from functools import lru_cache@lru_cache()
def change_money(total):
   if total == 0:
       return 1
   if total < 0:
       return 0
   return change_money(total - 2) + change_money(total - 3) + change_money(total - 5)

说明:在上面的代码中,我们用lru_cache装饰器装饰了递归函数change_money,如果不做这个优化,上面代码的渐近时间复杂度将会是 ,而如果参数total的值是99,这个运算量是非常巨大的。lru_cache装饰器会缓存函数的执行结果,这样就可以减少重复运算所造成的开销,这是空间换时间的策略,也是动态规划的编程思想。

到此,相信大家对“Python中为什么没有函数重载”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Python中为什么没有函数重载

本文链接: https://www.lsjlt.com/news/227969.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中为什么没有函数重载
    本篇内容主要讲解“Python中为什么没有函数重载”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中为什么没有函数重载”吧!题目:Python中为什么没有函数重载?点评:C++、Jav...
    99+
    2023-06-01
  • python中为什么没有dict函数
    python中是存在dict函数的,dict()函数的作用是用于创建一个字典。dict()函数语法:class dict(**kwarg)class dict(mapping, **kwarg)class&nb...
    99+
    2022-10-22
  • python中为什么没有cmp函数
    python中是存在cmp函数的,cmp()函数是用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。cmp()函数语法:cmp( x, y )cmp()函数使用方法:print "...
    99+
    2022-10-25
  • javascript语言中有没有函数重载
    这篇文章将为大家详细讲解有关javascript语言中有没有函数重载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 javascript没有函...
    99+
    2022-10-19
  • python为什么不支持函数重载
    python中不支持函数重载的原因函数重载主要是为了解决可变参数类型和可变参数个数两个问题。而python中可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数,从而...
    99+
    2022-10-06
  • 详细聊一聊为什么Python没有main函数
    目录前言为什么必须强制main函数作为入口?总结前言 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和...
    99+
    2023-03-19
    python没有main python没有main函数怎么运行 python没有主函数
  • Python中没有main函数的原因是什么
    Python中没有main函数的原因是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为什么必须强制执行主函数这些语言是已编译的语言,需要将代码编译到可执行的二进制文件中,以...
    99+
    2023-06-16
  • Python没有main函数的原因是什么
    为什么必须强制main函数作为入口?这些语言都是编译语言,需要将代码编译成可执行的二进制文件。为了让操作系统/引导程序找到程序的开头,需要定义这样一个函数。简而言之,需要在大量可执行的代码中定义一个至关重要的的开头。不难看出,对于这些语言来...
    99+
    2023-05-14
    Python main
  • 一文详解C++子类函数为什么不能重载父类函数
    先说结论: 子类成员函数的函数名和基类一样,但是函数声明与基类不一样的时候,不会和基类函数构成重载,而是会隐藏基类函数 简要回顾下C++中的基本概念: 重写(override): 基...
    99+
    2022-11-13
  • Python为什么没有void关键字
    本篇内容介绍了“Python为什么没有void关键字”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简单来说,void 是一种类型(type)...
    99+
    2023-06-16
  • html重置按钮为什么会没有反应
    小编给大家分享一下html重置按钮为什么会没有反应,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   有时候我们在网站内进行相...
    99+
    2022-10-19
  • javascript中没有名称的函数是什么
    这篇文章主要讲解了“javascript中没有名称的函数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中没有名称的函数是什么”吧!在javascript中,没有名称...
    99+
    2023-06-14
  • python怎么让函数没有返回值
    python中通过在函数中添加一个return语句,实现函数没有返回值,具体方法如下:例:定义一个func函数def func(x,y):num = x + yprint(func(1,2))输出结果为:3在函数中添加一个return语句d...
    99+
    2022-10-11
  • C++中怎么进行函数重载
    今天就跟大家聊聊有关C++中怎么进行函数重载,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。函数重载要求编译器能够***地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定...
    99+
    2023-06-17
  • C++中函数重载定义与原因是什么
    小编给大家分享一下C++中函数重载定义与原因是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!引例如果要求你只能通过print函数,即能打印字符串,又能打印一个整型。虽然在C语言中我们可以通过 print_i 和prin...
    99+
    2023-06-29
  • python中disk_usage()函数有什么用
    这篇文章主要为大家展示了“python中disk_usage()函数有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中disk_usage()函数有什么用”这篇文章吧。disk...
    99+
    2023-06-03
  • python中make_archive()函数有什么用
    这篇文章给大家分享的是有关python中make_archive()函数有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。make_archive()描述:压缩打包语法:make_archive(base_n...
    99+
    2023-06-03
  • python中copymode()函数有什么用
    小编给大家分享一下python中copymode()函数有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!copymode()描述:拷贝权限,前提是目标文件存...
    99+
    2023-06-03
  • python中rmtree()函数有什么用
    这篇文章将为大家详细讲解有关python中rmtree()函数有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。rmtree()描述:递归的去删除文件语法:shutil.rmtree(path[, i...
    99+
    2023-06-03
  • python中copy()函数有什么用
    这篇文章主要为大家展示了“python中copy()函数有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中copy()函数有什么用”这篇文章吧。copy()描述:复制文件语法:...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作