Python中函数缺省返回空值,试图打印没有return的函数都将是None。
(笔记模板由python脚本于2024年12月20日 19:59:03创建,本篇笔记适合会自定义python函数的coder翻阅)
-
Python 官网:https://www.python.org/
-
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
- My CSDN主页、My HOT博、My Python 学习个人备忘录
- 好文力荐、 老齐教室
本文质量分:
本文地址: https://blog.csdn.net/m0_57158496/
CSDN质量分查询入口:http://www.csdn.net/qc
- ◆ 调用函数多出一个None
- 1、题目描述
- 2、问题解析
- 3、ocr让学伴代劳
- 4、ai学伴对我“回答”的点评
- 5、我解析的专业程度
- 6、结语
◆ 调用函数多出一个None
1、题目描述
题主的代码
问题输出
【题目来源于 CSDN 问答社区提问“调用函数多出一个None”】
2、问题解析
返回None
,是因为题主对mark(p)
的调用方式,采用的print()而不是直接调用。
题主的mark(p)
没有return
语句,也就没有返回值(python函数缺省返回None
),所以题主print(mark(d))
,实际上就是print(None)
。
题主的代码是有些问题的:
1、程序中,score(a)
没有被调用,就没有存在的理由。
2、mark(p)
形参设置是p,函数体语句却是直接引用d
。
-
效果截屏
直接对函数调用就好,因题主的打印工作都在mark函数体内完成。 -
代码
代码优化
d = {'9601': 95, '9602': 96, '9603': 87}
def mark(data):
ls = [(v, k) for k, v in data.items()]
ls.sort(reverse=True)
for i in ls:
print(i)
mark(d) # 函数调用
不颠倒学号/分数,更符合习惯
代码
d = {'9601': 95, '9602': 96, '9603': 87}
def mark(data):
ls = [(k, v) for k, v in data.items()]
ls.sort(key=lambda x: x[-1], reverse=True) # 自定义排序规则key为分数
for i in ls:
print(i)
mark(d) # 函数调用
3、ocr让学伴代劳
学伴帮衬
今天想偷懒,突然想让ai代劳ocr。不曾想,竟然是出乎意料的“OK”。😋
如图所鉴,它提取的代码文本清晰准确,我是直接cv就能run滴。😎
4、ai学伴对我“回答”的点评
我:
(我在问答社区的的答题文本略,其实就是第一节的内容)
请您以一个资深python专家,审查一下我对题主代码的解析,是否到位?🙏
ai学伴:
您的解析是准确的,以下是对您指出的几个问题的详细说明:
-
score(a)
函数确实没有被调用,因此在这个上下文中它是多余的。如果目的是为了根据学号获取分数,那么这个函数可以保留并调用,但需要确保它在程序中被使用。 -
mark(p)
函数的形参是p
,但在函数体内直接使用了d
,这是一个错误。应该使用p
作为函数参数,以保持代码的一致性和可读性。
关于代码优化,您的建议是正确的。
以下是您提供的优化代码的点评:
d = {'9601': 95, '9602': 96, '9603': 87}
def mark(data):
ls = [(v, k) for k, v in data.items()]
ls.sort(reverse=True)
for i in ls:
print(i)
mark(d) # 函数调用
在这段代码中,您正确地将 mark
函数的参数从 p
改为 data
,以更好地反映其用途。您还去掉了不必要的 score
函数,并且正确地调用了 mark
函数。
对于不颠倒学号和分数的版本,您使用了 lambda
函数来自定义排序规则,这是处理这类问题的一个常用且高效的方法:
d = {'9601': 95, '9602': 96, '9603': 87}
def mark(data):
ls = [(k, v) for k, v in data.items()]
ls.sort(key=lambda x: x[-1], reverse=True) # 自定义排序规则key为分数
for i in ls:
print(i)
mark(d) # 函数调用
在这个版本中,您保持了学号和分数的原始顺序,并通过 key=lambda x: x[-1]
指定了排序依据为元组的第二个元素(即分数),然后通过 reverse=True
实现了降序排序。
综上所述,您的解析是到位的,并且提供的代码优化建议也是恰当的。这样的代码审查对于确保代码质量是非常有帮助的。
5、我解析的专业程度
我:
对于题主打印多出
None
的答疑,我的描述是否“专业”?🧐
ai学伴:
您的描述对于指出代码中打印None
的问题是非常清晰和专业的。您准确地解释了为什么print(mark(d))
会打印出None
,这是因为mark
函数没有返回值,所以默认返回None
。
以下是您描述的几个亮点:
-
问题识别:您正确地识别了问题所在,即
mark
函数没有return
语句。 -
概念解释:您解释了Python函数默认返回
None
的原理,这对于理解代码行为至关重要。 -
代码与效果对应:您将问题描述与代码效果截图相结合,直观地展示了问题。
-
改进建议:您不仅指出了问题,还提供了改进的代码示例,展示了如何修正问题。
-
代码习惯:您强调了Python编程中的一些良好习惯,比如使用有意义的函数参数名,以及避免不必要的函数调用。
总的来说,您的描述体现了专业素养,能够帮助初学者或经验不足的开发者理解并解决问题。在专业性的方面,您的描述是到位的。
如果需要进一步提升,可以考虑以下几点:
- 详细程度:可以更详细地解释为什么
None
会被打印出来,例如解释函数调用的返回值是如何被print
函数处理的。 - 代码风格:可以建议一些Python代码风格的最佳实践,比如PEP 8风格指南。
- 错误处理:如果适用,可以讨论如何优雅地处理潜在的错误或异常情况。
不过,根据您提供的描述,您的回答已经非常专业和有帮助了。👍
6、结语
用ai智能来印证、沉淀知识点,是一个高效易行的学习方式。
上一篇: 我的“双胞同体”发布模式的描述与展望(当被“激情”晕染,重创标题、摘要探索“吸睛”)
下一篇:
我的HOT博:
本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有
9
9
9篇。
- 让QQ群昵称色变的神奇代码
地址:https://blog.csdn.net/m0_57158496/article/details/122566500
浏览阅读:6.2w
点赞:25 收藏:89 评论:17
(本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)
- Python列表(list)反序(降序)的7种实现方式
地址:https://blog.csdn.net/m0_57158496/article/details/128271700
浏览阅读:1.3w
点赞:9 收藏:40 评论:8
(本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)
- pandas 数据类型之 DataFrame
地址:https://blog.csdn.net/m0_57158496/article/details/124525814
浏览阅读:1.0w
点赞:7 收藏:40
(本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)
- 个人信息提取(字符串)
地址:https://blog.csdn.net/m0_57158496/article/details/124244618
浏览阅读:1.0w
点赞:3 收藏:20
(本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)
- 罗马数字转换器|罗马数字生成器
地址:https://blog.csdn.net/m0_57158496/article/details/122592047
浏览阅读:8.2k
收藏:3
(本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)
- 统计字符串字符出现的次数
地址:https://blog.csdn.net/m0_57158496/article/details/130517025
浏览阅读:8.1k
点赞:5 收藏:24
(本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)
- Python字符串居中显示
地址:https://blog.csdn.net/m0_57158496/article/details/122163023
浏览阅读:8.0k
点赞:1 收藏:12 评论:1
- 回车符、换行符和回车换行符
地址:https://blog.csdn.net/m0_57158496/article/details/123109488
浏览阅读:6.7k
点赞:2 收藏:4
(本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)
- python清屏
地址:https://blog.csdn.net/m0_57158496/article/details/120762101
浏览阅读:6.1k
点赞:1 收藏:10
截屏图片
(此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)
精品文章:
- 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
- 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
- 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
- 靠谱程序员的好习惯
- 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归
CSDN实用技巧博文:
- 8个好用到爆的Python实用技巧
- python忽略警告
- Python代码编写规范
- Python的docstring规范(说明文档的规范写法)