十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1. 比较运算符:
创新互联企业建站,十年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都网站设计、做网站中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。
如果比较式成立,返回True;不成立,则返回False。
常见的比较运算符如下:
除了简单的两值相比之外,比较运算符还支持比较复杂的比较。
(1)多条件比较:
可以先给变量a赋值,然后做多条件比较。
1 a = 3
2 print(1 a 5)
(2)变量的比较:
给变量a和变量b分别赋值,进行比较。
1 a = 3
2 b = 3
3 print(a != b)
4
5 s1 = 'duwangdan'
6 s2 = 'DuWangDan'
7 print(s1 == s2)
(3)函数结果的比较:
1 print(abs(-1) len('duwagndan'))
2 # abs():返回输入参数的绝对值
在比较运算中有一些需要留意的小问题:
不同类型的对象不能用“、=、、=”进行比较,但可以用“==、!=”做比较。
1 print(21 == len('duwangdan'))
在文章开头说过,True对应的是1,False对应的是0。看下面这个例子,False+True其实相当于0+1:
1 print(False + True False + False)
2. 成员运算符:
成员运算符的关键词是“in”,判断一个元素是否在某一个列表中。运行如下程序后,可得到反馈结果。
1 a = 1
2 b = 'beautiful'
3 album = [1,'beautifully',False,7]
4 # 创建列表,命名该列表为album
5 print(a in album)
6 print(b in album
当album=[]时,表示该列表为空。
如果想在album中新增内容,可以用append方法来实现。新增后,会在列表末尾显示新增的内容。
1 album = [1,'beautifully',False,7]
2 album.append('Wow')
3 # 用append()方法在album中新增内容
4 print(album)
3. 身份运算符:
身份运算符是用来比较两个对象是否是同一个对象,而之前比较运算符中的“==” 则是用来比较两个对象的值是否相等。
身份运算符主要用“is、is not”来判断。
1 a = 'duwangdan'
2 b = 'duwangdan'
3 print(a is b)
4 print(a is not b)
4. 布尔运算符:
在Python中有3种布尔运算符:and、or、not。
如下例子,返回结果分别为:False、True、True。
1 print(1 2 and 1 0)
2 print(1 2 or 1 0)
3 print(not False)
Python中的运算符主要分为六大类,其中包含算术运算符、赋值运算符、比较/关系运算符、逻辑运算符、位运算符以及三目运算符。
1、Python算术运算符
是对数值类型的变量进行运算的,比如说:加、减、乘、除、取模和乘方运算等;
2、Python赋值运算符
是对已存在的变量进行重新设置新值的运算符;
3、Python关系运算符(也被称为比较运算符)
关系运算符结果一般包含bool、True、False等,而关系表达式经常用在if结构的条件中或循环结构的条件中;
4、Python逻辑运算符
是用于连接多个条件,一般来讲就是关系表达式;
5、Python位运算符
主要是用于数值类型的二进制的运算;
6、Python三目运算符
在Python中,没有其他语言的三目运算符,可以借助if语言实现类似的三目运算符。
因为你的three中的“”在python中表示字符串,而3是整型。类型不一样,因此不相等
在执行布尔运算的情况下,或是当表达式被用于流程控制语句时,以下值会被解析为假值: False, None, 所有类型的数字零,以及空字符串和空容器(包括字符串、元组、列表、字典、集合与冻结集合)。 所有其他值都会被解析为真值。 用户自定义对象可通过提供 __bool__() 方法来定制其逻辑值。
运算符 not 将在其参数为假值时产生 True,否则产生 False。
表达式 x and y 首先对 x 求值;如果 x 为假则返回该值;否则对 y 求值并返回其结果值。
表达式 x or y 首先对 x 求值;如果 x 为真则返回该值;否则对 y 求值并返回其结果值。
请注意 and 和 or 都不限制其返回的值和类型必须为 False 和 True,而是返回最终求值的参数。 此行为是有必要的,例如假设 s 为一个当其为空时应被替换为某个默认值的字符串,表达式 s or 'foo' 将产生希望的值。 由于 not 必须创建一个新值,不论其参数为何种类型它都会返回一个布尔值(例如,not 'foo' 结果为 False 而非 ''。)
条件表达式(有时称为“三元运算符”)在所有 Python 运算中具有最低的优先级。
表达式 x if C else y 首先是对条件 C 而非 x 求值。 如果 C 为真,x 将被求值并返回其值;否则将对 y 求值并返回其值。
这东西在每一个语言都有,and or not 对应与、或、非三种逻辑运算;True和False是bool值,即真和假。
逻辑运算和布尔值经常用于if判断语句、循环语句的条件语句。
首先作为控制条件应该是一个布尔值,即真和假——True和false。
python的内置类——布尔类,只有两个实例:True和false。对于一般数字而言,0是False,非0是True;对于序列和容器类型,如列表、字典、字符串等,空为False,非空为True。
所以就有了这样的用法:
输出:1 为True
输出: 0 为 False
输出:a = '字符串'
这了可以看出一个实例本身可以作为控制条件,这是因为,解释器会先把这个实例转换为bool类型,然后根据这个bool类型执行程序。即bool(a) = True、bool(b) = False。
但是只用这样的方式控制程序显然不够,比如我希望a为空,b为非空的时候,我输出“我天下第一”,这怎么办?
如果不用not and or 就会写成这样:
输出:我天下第一
可以把a 看成False,b看成True。
从这里我们可以看到,我们用了两层if--else语句来判断a为空,b为非空的情况,那么我用逻辑运算呢?
输出:我天下第一
一样的:可以把a 看成False,b看成True。那么not a and b的意思就是:not False and True
这时候就是逻辑运算符的优先级的问题,这可以借鉴C语言的那本书《C程序设计》第五版的第92页
!非
算数运算符
关系运算符
和 ||
赋值运算符
运算优先级从上到下,越来越低。
这是C语言里的,在python里就是:
not --------------高
and 和 or ----------低
所以我们先算not
于是 not False and True 就成所以了True and True这就很清楚了结果为True,所以“我天下第一”。
所以我们就可以总结出:
1.先将实例变为布尔值
2.在计算所有的not
3.根据语言特性,从左到右或者从右到左计算逻辑运算结果。
当然在python中是从左到右。
and 和 or 运算具有短路保护!什么意思呢?看一个栗子
1 or a
or的左边是1也就是True,根据or的运算法则,只要有一个真则为真,所以不管a是真还是假,结果都是真。
0 and a
and 左边为0,为False,同样,and只要有一个为假则为假,所以不管a是真还是假,结果都是假。
所以and 和 or 的结果可以根据第一个操作数的值来确定,那么他就不会对第二个操作数进行运算。
这个功能用起来要很小心,不然很可能会出现想不到的结果。
这里会输出什么呢?
输出:我天下第一
因为x是True,无论y and z 的结果是什么,这个语句的结果都是True,这就是短路保护,当然也有的人说惰性计算。
我觉得迭代器、生成器那个才叫惰性计算。