“调用函数”多出一个None

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 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


Python中函数缺省返回空值
调用函数多出一个None
(试图打印没有return的函数都将是None)


本文质量分:

96 96 96

本文地址: 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学伴:

      您的解析是准确的,以下是对您指出的几个问题的详细说明:
  1. score(a) 函数确实没有被调用,因此在这个上下文中它是多余的。如果目的是为了根据学号获取分数,那么这个函数可以保留并调用,但需要确保它在程序中被使用。

  2. 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

以下是您描述的几个亮点:

  1. 问题识别:您正确地识别了问题所在,即mark函数没有return语句。

  2. 概念解释:您解释了Python函数默认返回None的原理,这对于理解代码行为至关重要。

  3. 代码与效果对应:您将问题描述与代码效果截图相结合,直观地展示了问题。

  4. 改进建议:您不仅指出了问题,还提供了改进的代码示例,展示了如何修正问题。

  5. 代码习惯:您强调了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篇。

  1. 让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)

  2. 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)

  3. 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)

  4. 个人信息提取(字符串)
    地址: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)

  5. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8.2k
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  6. 统计字符串字符出现的次数
    地址: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)

  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8.0k
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址: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)

  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6.1k
    点赞:1 收藏:10 

推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及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规范(说明文档的规范写法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/939865.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flask内存马学习

文章目录 参考文章环境搭建before_request方法构造内存马after_request方法构造内存马errorhandler方式构造内存马add_url_rule方式构造内存马 参考文章 https://www.mewo.cc/archives/10/ https://www.cnblogs.com/gxngxngxn/p/18181936 前人栽树, 后人乘凉 大佬们太nb了, …

在Win11系统上安装Android Studio

诸神缄默不语-个人CSDN博文目录 下载地址:https://developer.android.google.cn/studio?hlzh-cn 官方安装教程:https://developer.android.google.cn/studio/install?hlzh-cn 点击Next,默认会同时安装Android Studio和Android虚拟机&#…

Python读取Excel批量写入到PPT生成词卡

一、问题的提出 有网友想把Excel表中的三列数据,分别是:单词、音标和释义分别写入到PPT当中,每一张PPT写一个单词的内容。这种批量操作是python的强项,尤其是在办公领域,它能较好地解放双手,读取Excel表后…

【CC2530开发基础篇】继电器模块使用

一、前言 1.1 开发背景 本实验通过使用CC2530单片机控制继电器的吸合与断开,深入了解单片机GPIO的配置与应用。继电器作为一种常见的电气控制元件,广泛用于自动化系统中,用于控制大功率负载的开关操作。在本实验中,将通过GPIO口…

ChatGPT生成接口测试用例(二)

5.1.4 自动生成测试数据 测试数据的生成通常是接口测试的一个烦琐任务。ChatGPT可以帮助测试团队生成测试数据,包括各种输入和它们的组合。测试人员可以描述他们需要的数据类型和范围,ChatGPT可以生成符合要求的测试数据,从而减轻测试人员的负…

空天地遥感数据识别与计算--数据分析如何助力农林牧渔、城市发展、地质灾害监测等行业革新

在科技飞速发展的时代,遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而,对于许多专业人士而言,如何高效地处…

使用ZLMediaKit 开源项目搭建RTSP 服务器

ZLMediaKit 是啥? ZLMediaKit是国人开发的开源C流媒体服务器,同SRS一样是主流的流媒体服务器。 ZLToolKit是基于C11的高性能服务器框架,和ZLMediaKit是同一个作者,ZLMediaKit正是使用该框架开发的。 官网 ZLMediaKit开源地址&…

Pytorch | 利用BIM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用BIM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集BIM介绍基本原理算法流程特点应用场景 BIM代码实现BIM算法实现攻击效果 代码汇总bim.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR10进行分…

同步异步日志系统:前置知识

一、日志项目的介绍 1.1 为什么要有日志系统 1、⽣产环境的产品为了保证其稳定性及安全性是不允许开发⼈员附加调试器去排查问题,可以借助日志系统来打印⼀些⽇志帮助开发⼈员解决问题 为什么不直接printf打印在屏幕上呢??因为现实中没有…

搭建私有链

文章目录 1. 准备工作2. 创建创世区块配置文件2.1 创建数据目录2.2 创建创世区块配置文件1. “config”部分2. “alloc”部分3. “coinbase”4. “difficulty”5. “extraData”6. “gasLimit”7. “nonce”8. “mixhash”9. “parentHash”10. “timestamp” 3. 初始化&#x…

国标GB28181平台EasyGBS在安防视频监控中的信号传输(电源/视频/音频)特性及差异

在现代安防视频监控系统中,国标GB28181协议作为公共安全视频监控联网系统的国家标准,该协议不仅规范了视频监控系统的信息传输、交换和控制技术要求,还为不同厂商设备之间的互联互通提供了统一的框架。EasyGBS平台基于GB28181协议&#xff0c…

详细解读TISAX认证的意义

详细解读TISAX认证的意义,犹如揭开信息安全领域的一颗璀璨明珠,它不仅代表了企业在信息安全管理方面的卓越成就,更是通往全球汽车供应链信任桥梁的关键一环。TISAX,即“Trusted Information Security Assessment Exchange”&#…

Pytorch | 从零构建AlexNet对CIFAR10进行分类

Pytorch | 从零构建AlexNet对CIFAR10进行分类 CIFAR10数据集AlexNet网络结构技术创新点性能表现影响和意义 AlexNet结构代码详解结构代码代码详解特征提取层 self.features分类部分self.classifier前向传播forward 训练过程和测试结果代码汇总alexnet.pytrain.pytest.py CIFAR1…

初学stm32 --- 系统时钟配置

众所周知,时钟系统是 CPU 的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。 STM32 的时钟系统比较复杂,不像简单的 51 单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为…

进程间通信方式---System V IPC信号量

进程间通信方式—System V IPC信号量 文章目录 进程间通信方式---System V IPC信号量信号量1.信号量原语2.semget 系统调用参数返回值 3.semop 系统调用参数返回值 4.semctl 系统调用5.特殊键值 IPC_PRIVATE6.信号量实现进程间通信1. 数据结构定义2. 信号量操作相关部分3. 生产…

深入理解Kafka:核心设计与实践原理读书笔记

目录 初识Kafka基本概念安装与配置ZooKeeper安装与配置Kafka的安装与配置 生产与消费服务端参数配置 生产者客户端开发消息对象 ProducerRecord必要的参数配置发送消息序列化分区器生产者拦截器 原理分析整体架构元数据的更新 重要的生产者参数acksmax.request.sizeretries和re…

electron 顶部的元素点不中,点击事件不生效

electron 顶部的元素点不中,点击事件不生效

Excel设置生日自动智能提醒,公式可直接套用!

大家好,我是小鱼。 今天跟大家分享一个WPS表格中根据出生日期,设置生日提醒,并且根据距离生日天数自动标记数据颜色。简单又实用,一个公式轻松搞定! 接下来我们先学习一下需要使用到的函数,然后再根据实例让…

全域数据集成平台ETL

全域数据集成平台ETL Restcloud 工作原理 RestCloud数据集成平台采用SpringCloud微服务架构技术开发,底层基于纯Java语言采用前后端分离架构,前端采用React技术进行开发。 RestCloud数据集成平台是基于数据流工作流引擎的架构进行研发的,底…

Spring(一)---IOC(控制权反转)

目录 引入 1.什么叫IOC(Inversion of Control)控制权反转? 2.什么叫AOP(Aspect-Oriented Programming)面向切面编程(涉及Java代理)? 3.简单谈一下Java怎么实现ICO? Spring框架的介绍 1. Spring框架的概述 2. Spring框架的优点 Spring IOC容器介绍…