一、None与Null的区别
(1)基本介绍
None可以看作一个具体的值用来初始化变量,可以理解为空值。
python没有Null关键字,在这类脚本语言中变量和值是绑定关系,如果说一个变量是Null,实际是说它没有与任何值绑定,也就是说该变量实际上并未被定义,可以理解为空。
a = None
print(a)
print(a=='')
print(a==0)
print(type(a))
print(type(""))
输出:
None
False
False
<class 'NoneType'>
<class 'str'>
表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
(对象=属性+特征,可以是任何人或物,5是int对象,’a‘是str对象…):
属性:去描述它的特征
方法: 它所具有的行为**
(2)None返回False
a = None
if a:
print('True')
else:
print('False')
输出:
False
(3)属性不同
dir([object]) 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
object – 对象、变量、类型。
print(dir(None))
print(dir(''))
输出:
['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__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', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
二、is与==的比较
(1)举例说明
例如,邻居家有一对双胞胎猫。这两只猫看起来完全相同,都有炭黑色的毛发和锐利的绿色眼睛。除非依靠一些个性上的小癖好,否则单从外表无法区分这两只猫。尽管看起来完全一样,但它们依然是两只不同的猫,两个不同的生物。
我们从此可以看出,“相等”和“相同”两者之间的含义是有所区别的。这种区别对理解Python的==和is比较操作符至关重要。
==操作符比较的是相等性,即如果那两只猫是Python对象,那么使用==操作符得到的答案是“两只猫是一样的”。
然而is操作符比较的是相同性,即如果用is操作符比较那两只猫,则得到的答案是“两只猫不是同一只猫”。
代码
a = [1,2,3]
b = a
print(a==b)
print(a is b)
输出:
True
True
即:a,b 具有相同的内容,且a,b指向相同的列表对象。
为之前的列表对象创建一个完全相同的副本,即对已有的列表调用list(),创建一个名为c的副本
c = list(a)
print(a==c)
print(a is c)
输出:
True
False
此时,a,b 具有相同的内容,但a,b指向不同的列表对象。
概括 is 与 == 的区别:
当两个变量指向同一个对象时,is表达式的结果为True;
当各变量指向的对象含有相同内容时,==表达式的结果为True。
当你需要在Python中选择is和==时,只要回想前面两只猫的示例就可以了。你一定没问题的。
参考链接:https://geek-docs.com/python/python-examples/python-objects-is-and.html
(2)0与False区别
print(0 == False)
print(0 is False)
print(False is False)
print(False+3)
输出:
True
False
True
3
在Python中,作为值来使用的时候,0和False是等价的
三、字符串判断
(1)返回都为空,字符串不一定相等
a =""
b = " "
print(a)
print(b)
print(type(a))
print(type(b))
print(b==a)
print(b.strip()==a)
输出:
<class 'str'>
<class 'str'>
False
True
(2)判断字符串是否为空
利用strip()函数
b.strip()==""则字符串为空
使用字符串长度判断
len(s) ==0 则字符串为空
isspace判断是否字符串全部是空格
s.isspace() == True
a = ""
b = " "
print(len(a))
print(len(b))
print(b.strip()=="")
print(b.isspace()==True)
输出:
0
1
True
True
(3)判断字符串内容
检验字符串是否只由字母组成,是返回True,否则返回False。
同理 isalnum() 用来判断数字。
用法:str.isalpha()
str = 'csdn123'
print(str.isalpha())
str1 = 'wasd'
print(str1.isalpha())
输出:
False
True