Python进阶(九)Python陷阱:Nonetype「建议收藏」

Python进阶(九)Python陷阱:Nonetype「建议收藏」而在上面的程序中,虽然高阶函数calc_prod()有返回值ff,但是ff()却没有返回值,则传递到外层函数calc_prod()同样没有返回值,故输出了。针对这一问题,自己在IDEA中进行了调试,发现果然多输出了一行None。只有值可以改变,其他只读。之所以出现是因为定义了一个变量或函数,却没有值或者返回值,因此会默认值为。发现b的值确实为None,且其类型为NoneType。若代码改为如下所示,则可以完美实现列表的输出。它不支持任何运算也没有任何内建方法。对象具有三个特性:身份、类型、值。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

今天解决一位网友的问题,内容如下:
请教代码问题

def calc_prod(lst):
    def ff():
        print map(lambda x:x*x,lst)
    return ff

f = calc_prod([1, 2, 3, 4])
print f()

Jetbrains全家桶1年46,售后保障稳定

结果:

[1, 4, 9, 16]
None

这样写输出为什么有None?针对这一问题,自己在IDEA中进行了调试,发现果然多输出了一行None。出现这一现象确实很令人费解。

自己写了简单的测试语句,如下:

b = print(5)
print(b)

通过断点调试,内容如下:

这里写图片描述

发现b的值确实为None,且其类型为NoneType。

什么是Nonetype?

要理解这个,首先要理解Python对象,python对象具有三个特性:身份、类型、值。

这三个特性在对象创建时被赋值。只有值可以改变,其他只读。类型本身也是对象。

NullNonePython的特殊类型,Null对象或者是None Type,它只有一个值None

它不支持任何运算也没有任何内建方法。None和任何其他的数据类型比较永远返回False

None有自己的数据类型NoneType。你可以将None复制给任何变量,但是你不能创建其他NoneType对象。

一句话总结:Null对象是python对象,又叫做NoneTypeNone是这个对象的值。

看过了NoneType的解释,之所以出现None就很好理解了。

NoneType之所以出现是因为定义了一个变量或函数,却没有值或者返回值,因此会默认值为None

而在上面的程序中,虽然高阶函数calc_prod()有返回值ff,但是ff()却没有返回值,则传递到外层函数calc_prod()同样没有返回值,故输出了None。 若代码改为如下所示,则可以完美实现列表的输出。

def calc_prod(lst):
    def ff():
        return map(lambda x:x*x,lst)
    return ff

	f = calc_prod([1, 2, 3, 4])
	print(f())
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/200399.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • IDEA激活成功教程后一直提示JetbrainsAgent 相关的弹框问题[通俗易懂]

    IDEA激活成功教程后一直提示JetbrainsAgent 相关的弹框问题[通俗易懂]激活成功教程后打开IDEA就弹框,关闭之后会自动打开浏览器,隔一会也会弹出来 也是一样的问题一开始是说把txt 和 jar 文件放一个路径下之类的方法,几经波折,发现没任何用处~最后各种搜索排查,在设置下更改配置就不弹啦~settings设置下搜索agent 取消”Instrumenting agent(requires debugger restart)”在 Reload classes after compilation:选择第一个 Always…

  • tensorflow tensor转numpy

    tensorflow tensor转numpysess=tf.Session()withsess.as_default():change=tf.expand_dims(tf.reshape(batch_rodrigues((np.array(gt_data[‘pose_0’]).flatten()).reshape(-1,3).astype(np.float32)),(24,3,3)),0)gt_data[‘po.

    2022年10月19日
  • Python基础知识点梳理

    Python基础知识点梳理python常见知识点梳理摘要:本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象。python的详细语法介绍可以查看官方编程手册,也有一些在线网站对python语法进行了比较全面的介绍,比如菜鸟教程:python3教程|菜鸟教程本文主要是介绍基础语法,操作实例在另一篇博客中单独介绍:python语言介绍python是一门解释型语言,python的设计目标:一门…

  • PostgreSQL索引类型

    PostgreSQL索引类型PostgreSQL有很多索引类型。每种索引类型都有各自适用的情景,具体使用哪一种索引取决于数据类型、表中的底层基本数据和执行的查询类型。接下来简单看一下PostgreSQL中可用的索引类型有哪些,以及各种情况下适合使用哪个索引。1、B-treePostgreSQL中,B-tree索引是最常用的一种索引类型。用索引扫描比顺序扫描速度快,因为它可能只需要读取少部分页面,而顺序扫描可能读取几千个页面。…

  • python的metaclass

    元类一般用于创建类。在执行类定义时,解释器必须要知道这个类的正确的元类。解释器会先寻找类属性__metaclass__,如果此属性存在,就将这个属性赋值给此类作为它的元类。如果此属性没有定义,它会向上

    2021年12月25日
  • navcat激活码【在线注册码/序列号/破解码】

    navcat激活码【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号