zoukankan      html  css  js  c++  java
  • python中的none类型

    原文: https://www.cnblogs.com/mika-blogs/p/10981239.html

    --------------------------------

    与C不同,在python中是没有NULL,但存在相近意义的None。

    None表示空值,它是一个特殊 Python 对象, None的类型是NoneType

    >>> type(None)
    <class 'NoneType'>

    None在 Python 解释器启动时自动创建, 解释器退出时销毁。
    在一个解释器进程中只有一个 None 存在, 因为不可能有其他对象会使用 None 已占用的内存(它就是占了个坑)
    所以只有: None is None and None == None

    • None不支持任何运算也没有任何内建方法
    • None和任何其他的数据类型比较永远返回False
    • None有自己的数据类型NoneType,不能创建其他NoneType对象(它只有一个值None)
    • None与0、空列表、空字符串不一样
    复制代码
    >>> None == 0
    False
    >>> None == ' '
    False
    >>> None == None
    True
    >>> None == False
    False
    复制代码
    • 可以将None赋值给任何变量,也可以给None值变量赋值
    • None是没有像len,size等属性的,要判断一个变量是否为None,直接使用
    if a is None:
        pass

    结合is和== 说明None和空列表、空字符串的区别

    用指针来说
    is: 指向同一内存地址
    ==: 指向的内存地址中的内容是相同的

    复制代码
    a = list()
    b = []
    print a == b # True
    print a is b # False
    
    c = "abc"
    d = "abc"
    print c == d # True 字符串池
    print c is d # True
    复制代码

    此时为 list() 和 [] 相当于各自分配了一次内存,所以 a is not b,但是 各自分配的内存中的内容是一样的,故而 a == b

    c 和 d 指向同一个内存地址(字符串池、引用计数机等机制)所以 c is d,c 和 d 指向的内存中存的内容也是相同的("abc"),所以 c == d。

    而 None,可以认为是内存中不同于其他的一块内存空间,a b c d 都有各自的指向,所以不是指向 None,故而 a b c d is not None,且None是唯一的,自然 a b c d != None

  • 相关阅读:
    浅谈分层图最短路问题
    [Luogu P2574]XOR的艺术
    luogu P2419 [USACO08JAN]牛大赛Cow Contest
    luogu P1119 灾后重建
    [国家集训队]跳跳棋
    洛谷P4147 玉蟾宫
    [ZJOI2007]棋盘制作
    树状数组模版
    Nearest Common Ancestor
    P1260 工程规划
  • 原文地址:https://www.cnblogs.com/oxspirt/p/13274999.html
Copyright © 2011-2022 走看看