该内容的参考来源是发表在CSDN博客平台上的文章, 这篇文章的主题是关于None与空字符(即NULL)之间的区别。
第一步, 我们需要把对象的概念搞清楚。
在这个当中, 万物都是对象, 所有的操作都是对着对象进行的。那么, 什么叫做对象呢? 数字 5 是一个 int 类型的对象, 空的字符串 '' 是一个 str 类型的对象, 异常本身也是一个对象。如果说得比较抽象一点, 人来说是一个对象, 猫来说是一个对象, 狗来说也是一个对象。
关于某个具体对象, 从实际角度来看, 它自身是具备两个主要方面的特征的:
属性:去描述它的特征
这个方法是这样的, 也就是它拥有着的那些具体的行动方式。
因此, 一个对象是由它的属性和它的方法来构成。其实, 方法也属于一种属性, 只是这种属性与用于存储数据的数据属性有着明显的不同, 它是一种可以被调用执行操作的特性。
所谓的类, 就是把具有相同属性和方法的对象进行归类, 也就是所谓的那个class这个东西。通过使用一个类, 我们可以去创建出多个对象实例, 比如像人、猫、狗这些, 他们其实都可以归属于哺乳动物这个类里面。
类实际上是对象的一种抽象化的表达模式, 而对象则是类的具体实例化表现。类它并不用来代表那些非常具体的事物, 而对象是用来表示那些具体的事物的。
类这个概念, 它本身是存在有属性和方法这两个成分的。
数据类型这个东西, 它本身也是一个对象。
实际上,是在进行面向对象程序设计的时候, 才会有对象这种概念存在的, 而在进行面向过程型程序设计的时候, 我们讨论得最多的内容, 其实是关于数据类型的。
它所提供的最基本的这些个数据类型, 大致上呢, 就是包括那一个布尔型, 还有那个整型, 再有一个就是浮点型, 紧接着又是字符串这一类, 此外呢还有列表, 然后还有元组, 随后呢又牵扯到集合这个概念, 最后再加上字典等等这样的东西。
从某种角度去观察的话, 整个数据类型这一块内容, 也可以被大家看作是相当于编程概念中的一个类。与此同时, 这其中的哪一种具体数据类型, 都会体现为一个个具体的对象存在, 并且, 这些对象各自还具备着属于自己的那些属性还有方法。
只要弄明白前面提到的那些概念, 那么接下来想要搞清楚None还有Null之间的不同点, 这就不是一件困难的事情了。
1)是不同的数据类型
这句话是在讲, 那个值它是一个空的对象,空的值它是里面一个比较特殊的值, 大家是用None来表示的, 注意, None它不能给大家理解为是0, 为啥?
因为0这东西它是有意义的东西, 而None它是一种特殊的空值, 咱们是可以将None赋值给任何变量的, 同时, 咱们也可以给那些等于None值的变量去重新赋值。
In[4]: type('')
Out[4]: str
字符型
2)在进行判断操作的过程中, 所有的情况全部都是False, 因此并没有进行打印的操作。
a =Noneifa:
print(1)
b =''
ifb:
print(1)
3)属性不同
这个
函数会把参数所属的属性还有方法的列表给返回出来, 如果这个参数里头是包含了名为
的方法的, 那么这个被提到的这一方法就是会被调用处理的, 要是说参数内并不含有那个叫
的方法存在的话, 这个时候该过程将会尽可能地最大程度上将关于参数的各项信息全都收集一遍。
dir(None) ['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] dir('') ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']