美文网首页
Scala和Python中的None

Scala和Python中的None

作者: 飞有飞言 | 来源:发表于2020-11-30 15:19 被阅读0次

总览

Python中的None

java,c,c++,SQL等多数语言中都有一个null的概念,表示指针指向一个空地址。java没有地址一说,java中的null是没有分配指向的对象之意。
python中的None也就相当于其他语言中的null,表示一个对象指向了一个空地址。
python秉承一切皆对象的概念,所以None也是对象。它的类型是

type(None) == NoneType

NoneType唯一的一个实例就是None

对于没有return的方法,或者什么也不return的方法,返回值就是None,例如

def f():
    pass
def g():
    return

这两个方法的返回值都是None
python中对一个变量是不是None一般使用is关键字来判断(也可用==)

a = f()
if a is None: # a == None
    print('a is None')

scala 中的None

scala兼容于java,所以java中的null照样移植到了scala中(但是含义稍有不同)。但None在scala中并不是null。
scala中的None其实是Option类的一个实例

先来看Option类是什么。Option类是一个容器类,也就是放其他对象的一个容器。Option中元素的类型用泛型定义Option[+A], 为什么要有一个加号,后面介绍。
Option它的含义是说,要么有一个元素,要么没有。

  1. 有一个元素,使用Some来表示, 例如,Some(1)表示含有一个整形元素1的Option
  2. 没有元素,使用None来表示

None一般使用在模式匹配中,判断一个Option类型的对象是否有值。例如

xs.headOption match {
  case Some(x) => println(s"xs first value is $x")
  case None => println("xs is empty")
}

None是所有Option类型的子类,这一点可以从Option的定义看到
abstract class Option[+A]
而None的定义是
case object None extends Option[Nothing]
因为在scala中,Nothing是所有其他类的子类,而且Option支持协变,那么Option[Nothing]就是所有Option[+A]的子类了。 也就是说None的类型可以在任何需要Option类型的地方。

总结

本文讲了Scala和Python中的None的不同,并且从代码层面讲解了scala中的None的某些特点。

相关文章

  • Scala和Python中的None

    总览 Python中的None java,c,c++,SQL等多数语言中都有一个null的概念,表示指针指向一个空...

  • 【Scala】Scala中的Nothing,Null,None,

    Nothing Nothing是所有类型的子类,也是Null的子类。Nothing没有对象,但是可以用来定义类型。...

  • Scala语法

    转摘地址: Scala中的Map使用例子Scala 技术笔记之 Option Some None Map 不可变M...

  • None、null和NaN

    注意: python中没有null,但是有和其意义相近的None。 1、None None表示空值,它是一个特殊 ...

  • 转载:scala中的Option、Some、None

    参考文章1:Scala Option(选项):https://www.runoob.com/scala/scala...

  • python 中None,is和==的深入探讨

    注: 运行环境:python3.6.6,win10,64位 1. None None是python中的一个特殊的常...

  • 类结构

    Scala类结构 scala和python类似,scala中所有值都是继承自Any,包括函数。所以在scala之中...

  • Python中的布尔类型

    Python中的布尔类型只有True和False两种值其中Python把0、空字符串''和None看成 False...

  • 数据分析(三)-处理丢失数据

    处理丢失数据 None与np.nan的区别 None None是Python自带的,类型为Python objec...

  • (15) python中的None

    None 表示空 不同于 空字符串 空的列表 0 False 类型不同,值不同 深入 类中默认非空 类中为空的情...

网友评论

      本文标题:Scala和Python中的None

      本文链接:https://www.haomeiwen.com/subject/jqdziktx.html