网易首页 > 网易号 > 正文 申请入驻

Python:函数返回值

0
分享至

在 Python 中,函数的返回值(Return Value)是函数调用后向调用者提供计算结果的主要机制。

一、基本概念与语法结构

1、return 语句语法结构

return 是函数结束执行并返回结果的标准语句。

return [expression]

expression:任意可求值的 Python 表达式。

若省略 expression,解释器默认返回内置对象 None。

一旦执行到 return 语句,函数立即终止,其后语句不会再执行。

返回结果可以是任意对象(数值、字符串、容器、自定义对象等)。

示例:

print(result)  # 输出:16

return 是一种控制流语句,并非信息输出命令,它的作用是结束函数执行并将结果交给调用方。

2、return 与 raise 的关系

return 和 raise 都会导致函数终止执行,但二者语义截然不同。


示例:

    print("错误:", e)

• return 表示函数的正常结束语义。

• raise 用于函数的异常结束语义。

• 在良好设计中,不应以返回错误码替代异常处理机制。

3、提前返回(Early Return)

在函数中根据条件提前返回结果,可避免深层嵌套、提升可读性。

    return a / b

“提前返回”优于深层嵌套的 if 结构,常用于输入验证、边界条件检查、默认分支等场景。

二、基础返回形式

1、返回单个值

最常见的写法,通过 return 返回单个结果。

print(calculate_bmi(70, 1.75))  # 输出:22.86

单值返回常用于数值计算、逻辑判断、字符串拼接等任务。

2、返回多个值

Python 允许使用逗号分隔多个表达式进行返回,解释器会自动将其打包为元组(tuple)。

print("商:", q, "余数:", r)  # 输出:3 2

• return expr1, expr2 等价于 return (expr1, expr2)。

• 所谓“多值返回”实为“容器返回”的语法糖。

• 可灵活配合解包(unpacking)机制使用。

3、无 return 语句

某些函数仅执行操作(如打印、写文件),它们可能并不需要返回值。

若函数未显式使用 return,或不指定返回内容,解释器会在函数末尾自动执行:

return None

示例:

print(result)                # 输出:None

• 返回 None 意味着函数执行完毕但无需结果传递。

• 在接口设计中应明确函数是否具备返回值。

• 不建议依赖隐式None作为逻辑判断依据。

三、结构化与高阶返回

1、返回容器结构

当结果具有多层或多属性信息时,可返回容器类型数据(如 list、dict、set)。

# 输出:{'name': '小艾', 'age': 18, 'courses': ['english', 'math', 'physics']}

• 返回容器有助于封装多维数据。

比如,元组(tuple)常用于多个值的固定返回,列表(list)常用于动态结果集的返回,字典(dict)常用于命名字段的结构化返回,集合(set)可自动去重,等等。

• 调用者可按键或索引灵活访问。

• 容器返回可取代多重 return 分支,提高接口清晰度。

2、返回函数对象

Python 函数是一等对象(first-class object),既作为参数传递,也可作为返回值返回。

print(cube(3))    # 输出:27

• 上例中,return inner 返回的是函数对象,而非执行结果。

• 若内部函数引用外部变量(如上例中的 exponent),则形成闭包(closure)。

• 返回函数对象常用于实现装饰器、策略模式、延迟计算等动态逻辑。

3、返回类实例

函数也可返回对象实例,以便后续方法调用。

print(f"{user.name} ({user.role})")  # 输出:小艾 (guest)

返回类实例常用于封装复杂状态或行为,是工厂函数(factory function)的典型模式。

4、返回生成器对象

yield 不同于 return,它提供了一种延迟返回机制。当函数体中出现 yield,该函数被编译为生成器函数,其调用结果为生成器对象。

# 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

• yield 会暂停函数执行并返回当前值。

• 与 return 不同,生成器可持续恢复执行。每次迭代都会从上次中断处继续。

• 返回生成器对象常用于惰性求值、大数据流、协程结构。

四、返回值的类型注解与文档化

1、类型注解

Python 3.5+ 支持在函数定义中通过 -> 指定返回值类型提示(type hint)。

    return 3.1416 * radius ** 2

说明:-> float 是返回值注解。

复杂类型返回示例:

print(coordinates)  # 输出:(3.14, 5.67)

• 类型提示不影响运行时行为,仅供阅读、类型检查器或 IDE 使用。

• 对于可选返回(可能为 None),推荐使用 Optional[T]。

2、文档化返回值

在函数文档字符串(docstring)中,应清晰描述返回值的类型与语义。

    return round(price * (1 - rate), 2)

文档化返回值是高质量函数设计的重要组成部分。

五、函数返回值的设计原则

1、单一职责原则

每个函数只完成一个明确的任务。

2、保持返回类型一致

避免函数在不同路径返回不同类型。

3、优先抛出异常而非返回错误码

在复杂场景中,用 raise 代替 (False, message)。

4、结构化返回

推荐使用字典(dict)、命名元组(namedtuple)或自定义类封装复杂结果。

5、文档化与类型注解

明确类型提示与文档说明,函数行为自解释、可维护。

小结

在 Python 中,return 用于结束函数并返回计算结果。若无表达式或未显式使用 return,默认返回 None。

所谓“多值返回”实为返回一个包含多个结果的容器(如元组、字典等)。

函数还可返回函数、类实例或生成器对象,从而支持高阶与对象化设计。

结合类型注解与文档说明,可使函数行为清晰、自解释且易维护。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
你见过创业失败最惨的结果是什么样?网友评论区没有最惨只有更惨

你见过创业失败最惨的结果是什么样?网友评论区没有最惨只有更惨

夜深爱杂谈
2026-01-25 18:54:03
10战9胜!尼克斯大胜绿军升东部第二 布伦森31+8唐斯复出两双

10战9胜!尼克斯大胜绿军升东部第二 布伦森31+8唐斯复出两双

醉卧浮生
2026-02-09 05:10:45
汕大学生不再免学费 李嘉诚资助方式改变

汕大学生不再免学费 李嘉诚资助方式改变

原某报记者
2026-02-09 15:21:29
一周双赛!曼联获胜进前三,切尔西遇上大胜自己的保级队

一周双赛!曼联获胜进前三,切尔西遇上大胜自己的保级队

嗨皮看球
2026-02-09 19:55:46
孙铭徽韧带撕裂重伤!广厦争冠很难,打山东队王博或重用5小将

孙铭徽韧带撕裂重伤!广厦争冠很难,打山东队王博或重用5小将

老吴说体育
2026-02-09 23:38:42
麻生太郎彻底失算,想与中方硬碰硬,却发现:想送死的人变少了

麻生太郎彻底失算,想与中方硬碰硬,却发现:想送死的人变少了

墨兰史书
2026-02-09 23:08:06
2025年中国31省市GDP总量排行榜:18个省市增速跑赢全国

2025年中国31省市GDP总量排行榜:18个省市增速跑赢全国

中商产业研究院
2026-02-09 17:23:03
历代皇室为何把王莽的头颅当宝贝,前后收藏了272年,它有何特别

历代皇室为何把王莽的头颅当宝贝,前后收藏了272年,它有何特别

千秋文化
2026-01-30 21:47:10
你见过最无用的节俭行为是什么?看完网友分享:CPU都干烧了!

你见过最无用的节俭行为是什么?看完网友分享:CPU都干烧了!

夜深爱杂谈
2026-02-03 21:51:33
《太平年》赵匡胤黄袍加身后“奇略制六合”,雄才大略谁人能比!

《太平年》赵匡胤黄袍加身后“奇略制六合”,雄才大略谁人能比!

小雪的运动之心
2026-02-09 13:18:56
有色的牛市,才刚刚开始!

有色的牛市,才刚刚开始!

金融界
2026-02-09 08:01:09
网传浙江大学要建新校园,或选址...

网传浙江大学要建新校园,或选址...

TOP大学来了
2026-02-09 17:29:39
75岁有八个男朋友?凌晨在北京去世?刘晓庆私生活谣言有多离谱

75岁有八个男朋友?凌晨在北京去世?刘晓庆私生活谣言有多离谱

叨唠
2026-02-07 21:23:51
2026除夕,别再说“新年快乐”,精选20句拜年祝福语,高级不俗套

2026除夕,别再说“新年快乐”,精选20句拜年祝福语,高级不俗套

Lily美食谈
2026-02-06 23:29:15
开国上将许世友之孙:中国首位火箭军女博士,长相俊美,为人低调

开国上将许世友之孙:中国首位火箭军女博士,长相俊美,为人低调

文史达观
2026-01-15 14:50:48
别墅搜出23件国宝,全家集体失联!徐湖平案落幕,17年举报有结果

别墅搜出23件国宝,全家集体失联!徐湖平案落幕,17年举报有结果

诗意世界
2026-01-03 15:19:25
能治老花眼的滴眼液首获FDA批准,滴一滴30分钟起效、保持10小时

能治老花眼的滴眼液首获FDA批准,滴一滴30分钟起效、保持10小时

DeepTech深科技
2026-02-07 20:41:12
演员仲星火再婚,遭三个女儿反对,他带着新婚妻子四年搬了八次家

演员仲星火再婚,遭三个女儿反对,他带着新婚妻子四年搬了八次家

墨说古今
2026-02-09 23:15:05
卡里克:有球迷等着理发?这事儿是挺逗的,但我不会拿来动员

卡里克:有球迷等着理发?这事儿是挺逗的,但我不会拿来动员

懂球帝
2026-02-09 22:24:07
范元甄:曾是红极一时的“延安四美”,却因“太聪明”输掉了一生

范元甄:曾是红极一时的“延安四美”,却因“太聪明”输掉了一生

干史人
2026-02-02 08:33:29
2026-02-10 00:12:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1744文章数 74关注度
往期回顾 全部

科技要闻

实测|字节新模型带着音效和复杂运镜杀疯了

头条要闻

人民日报评"南博事件":无论涉及到什么人 绝不放任

头条要闻

人民日报评"南博事件":无论涉及到什么人 绝不放任

体育要闻

不会打篮球,如何入选詹娜前男友第一阵容

娱乐要闻

央视电影活动名场面!明星站位太讲究

财经要闻

沪深北交易所优化再融资 释放3个信号

汽车要闻

长安将搭钠电池 好比汽车要装柴油机?

态度原创

数码
手机
教育
时尚
军事航空

数码要闻

外星人上架“AW2526HL”24.5英寸显示器:1080P 300Hz,1199元

手机要闻

劝大家等待小米18标准版,只因双两亿、潜望、满血芯片都来了!

教育要闻

孩子爱玩手机不爱学习?你没用对方法!

冬季穿衣越简单越实用!从这些日常穿搭中收获灵感,大方又自然

军事要闻

美伊最敏感时刻 林肯号航母迎来三位“不速之客”

无障碍浏览 进入关怀版