展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python编程:有关函数返回值以及最佳实践基本指导原则

Python编程:有关函数返回值以及最佳实践基本指导原则

本篇内容作为以函数为主题的最后一篇,来介绍一下函数返回值以及编写函数的一些基本的最佳实践指导原则。函数输出:返回值函数的返回值是Python领先于竞争对手的东西之一。在大多数其他语言中,函数通常只允许返回一个对象,但是在Python中,你可以返回一个元组——这意味着可以返回任何你想要的东西。这个特性允许程序员编写用其他语言编写的软件要困难得多,或者肯定会更加乏味。我们已经说过,要从函数返回一些东西,我们需要使用return语句,后面跟着我们想要返回的东西。函数体中可以根据需要有多个返回语句。另一方面,如果

本文目录

    本篇内容作为以函数为主题的最后一篇,来介绍一下函数返回值以及编写函数的一些基本的最佳实践指导原则。

    函数输出:返回值

    函数的返回值是Python领先于竞争对手的东西之一。在大多数其他语言中,函数通常只允许返回一个对象,但是在Python中,你可以返回一个元组——这意味着可以返回任何你想要的东西。这个特性允许程序员编写用其他语言编写的软件要困难得多,或者肯定会更加乏味。我们已经说过,要从函数返回一些东西,我们需要使用return语句,后面跟着我们想要返回的东西。函数体中可以根据需要有多个返回语句。

    另一方面,如果在函数体中我们不返回任何东西,或者我们调用一个“裸”return语句,函数将返回None。当不需要时,这种行为是无害的,但是也允许你整些有趣的模式的,确认Python是一种非常一致的语言。

    我们说它是无害的,因为你永远不会被迫收集函数调用的结果。下面将通过一个例子向你展示所说的意思:

    # 返回none值
    def func():
    pass
    
    func() # 这个调用是没有接收的,将丢失
    a = func() # 这个调用被a接收
    print(a) # prints: None

    注意,整个函数体仅由pass语句组成。正如官方文档告诉我们的那样,pass是一个空操作,因为当它被执行时,什么也不会发生。当语法上需要语句但不需要执行代码时,它作为占位符非常有用。在其他语言中,我们可能只需要用一对花括号({})来表示,这定义了一个空作用域;但在Python中,作用域是由缩进代码定义的,因此像pass这样的语句是必要的。

    还要注意,func()的第一个调用返回一个没有接收的值(None)。正如我们前面提到的,接收函数调用的返回值不是必须的。

    这很好,但不是很有趣,我们写一个有趣的函数怎么样?还记得我们讨论过阶乘函数。让我们在这里编写我们自己的实现(为了简单起见,我们假设函数总是用适当的值正确调用,所以我们不需要检查输入参数):

    # 阶乘函数,返回单个值
    def factorial(n):
    if n in (0, 1):
    return 1
    result = n
    for k in range(2, n):
    result *= k
    return result
    
    f5 = factorial(5) # f5 = 120

    注意,我们有两个返回点。如果n是0或1,则返回1。否则,我们执行所需的计算并返回结果。

    提示:在Python中,通常使用in操作符来进行成员检查,就像我们在前面的例子中所做的那样,而不是更冗长的检查:

    if n == 0 or n == 1:

    …

    现在再来试着把这个函数写得更简洁一点:

    # 返回单个值示例.2
    from functools import reduce
    from operator import mul
    
    def factorial2(n):
    return reduce(mul, range(1, n + 1), 1)
    
    f5 = factorial(5) # f5 = 120

    这个简单的示例展示了Python是如何既优雅又简洁的。即使我们从未见过reduce()或mul(),这个实现也是可读的。如果你不能看懂或理解它,抽出几分钟来做一些Python文档研究,直到你清楚它的行为。能够在文档中查找函数并理解由其他人编写的代码是每个开发人员都需要能够执行的任务,因此将其作为一个挑战。

    提示:学会查看Python自带帮助,请确保查找help()函数,这在使用控制台进行探索时非常有用。

     返回多个值

    正如我们前面提到的,与大多数其他语言不同,Python非常容易从一个函数返回多个对象。这个特性带来了无限的可能性,并允许你以一种难以用其他语言再现的风格进行编码。我们的思维会受到我们使用的工具的限制。因此,当Python给予你比其他语言更多的自由时,它就是在增强你的创造性能力。

    返回多个值非常简单:只需使用元组(显式或隐式)。让我们看一个模仿divmod()内置函数的简单例子:

    # 返回多个值
    def moddiv(a, b):
    return a // b, a % b
    
    print(moddiv(20, 7)) # prints (2, 6)

    我们可以将前面代码中粗体部分包装在括号中,使其成为显式元组,但没有必要这样做。上面的函数同时返回除法的结果和余数。

    有关函数的有益建议

    在编写函数时,遵循一些最佳实践指导原则是非常有用的,这样才能很好地编写函数。我们来看一看这些指导原则,以助益你更好的理解和应用函数。

    1)函数应只做一件事

    做一件事的函数很容易用一句话来描述。执行多项任务的函数可以重构拆分为执行一项任务的更小函数。这些较小的函数通常更容易阅读和理解。

    2)函数应是很小的

    它们越小,测试和编写它们就越容易,这样它们也就更专注于只做一件事。

    3)输入参数越少越好

    接受大量参数的函数很快就变得难以管理(以及其他问题)。当需更多的输入参数时,酌情考虑,如重构为类对象或其它复合型数据。

    4)函数的返回值应该一致

    返回False和返回None不是一回事,即使在布尔上下文中,它们的值都是False。False表示我们有信息(即False),而None表示没有信息。尽可能编写以一致的方式返回的函数,无论其逻辑中发生了什么。

    5)函数不应该有副作用

    换句话说,函数不应该影响调用它们的值。这可能是目前最难理解的一条实践性原则,所以这里给出一个使用列表的示例。在下面的代码中,注意如何不使用sorted()函数对numbers进行排序,该函数实际上返回的是已排序的数字副本。相反,list.sort()方法作用于numbers对象本身,这很好,因为它是一个方法(属于对象的函数,因此有权修改它):

    >>> numbers = [4, 1, 7, 5]
    >>> sorted(numbers) # 不会排序原始的'numbers' 数字列表
    [1, 4, 5, 7]
    >>> numbers # 验证一下
    [4, 1, 7, 5] # 很好,没有改变原始数据对象
    >>> numbers.sort() # 这将实质性影响原始列表
    >>> numbers
    [1, 4, 5, 7]

    所以,遵循以上这些常规的基本指导原则,将有益于你写出更好的函数,为你实现更好的服务。

    本文小结

    到此关于Python函数的主体性知识就介绍完了——函数定义语法、输入参数定义以及相关规则、返回值实现和多返回值等,并简单总结了基于最佳实践的一些有益基本指导原则。请多加练习和体会,以便更好的理解和掌握作为Python的核心特性之一的函数。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 编程 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。