【Python】从1<2<3的语法糖说起

python有一个很有意思的语法糖你可以直接写1<2<3。

这复合我们通常意义上的数学不等式,但对学过C等语言其实是有疑惑的。

我们知道不等式返回的其实是个Bool值,在C中是1,0因此C中下面情况是正确的

0<0<1

因此我们看下面这个情况

True == True == False
#False
False == False == True
#False

从通常意义来说==号从右往左结合,无论如何值都应该是True,但是结果确是False

这就是源于python的一个语法糖,对于运算优先级的规定。

所有比较类型的运算符拥有同样的优先级,会从左至右链接起来共同作为一个比较段( all have the same precedence and have a left-to-right chaining feature as described in the Comparisons section)。

in, not in, is, is not, <, <=, >, >=, !=, ==

比如一个典型的True == True == False它实质是如下的逻辑关系

(True == True) and (True == False)

对于 a<b<c这种关系中的任意子项都满足其逻辑关系,和数学上a<b<c是一样的
即对a<b<c,a需满足a<b and a

时间: 2024-08-07 03:55:31

【Python】从1<2<3的语法糖说起的相关文章

python进阶之内置函数和语法糖触发魔法方法

前言 前面已经总结了关键字.运算符与魔法方法的对应关系,下面总结python内置函数对应的魔法方法. 魔法方法 数学计算 abs(args):返回绝对值,调用__abs__; round(args):返回四舍五入的值,调用__round__; math.floor():向下取整,调用__floor__; math.ceil():向上取整,调用__ceil__; math.trunc():求一个值距离0最近的整数,调用__trunc__; divmod(a,b):返回商和余,调用__divmod_

Python中几个有趣的语法糖

with with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的"清理"操作,释放资源,比如文件使用后自动关闭.线程中锁的自动获取和释放等. http://www.ibm.com/developerworks/cn/opensource/os-cn-pythonwith/ field yield 的好处是显而易见的,把一个函数改写为一个 generator 就获得了迭代能力 http://www.ibm.com/developerworks/cn/ope

黄哥通过代码来说明:python语法糖

下面用一个例子来说明: #coding:utf-8 """ foo = decorator(foo) 语句的作用是将foo函数作为参数传递到decorator 返回值赋值给foo ,那么foo不再是原来的函数了 为了简化代码,python添加了装饰器这个语法糖 使得 @decorator def foo(): print("欢迎参加黄哥python培训") print("咨询qq:1465376564") print("htt

Python语法糖系列

摘自:https://blog.csdn.net/five3/article/details/83474633语法糖说明语法糖(Syntactic sugar): 计算机语言中特殊的某种语法 这种语法对语言的功能并没有影响 对于程序员有更好的易用性 能够增加程序的可读性简而言之,语法糖就是程序语言中提供[奇技淫巧]的一种手段和方式而已. 通过这类方式编写出来的代码,即好看又好用,好似糖一般的语法.固美其名曰:语法糖 一个简单的例子假设:有2个数字,现需要从中得到最大的那个数字.如何实现? b =

语法糖 装饰器

1.在python中    @函数名 就叫语法糖 2.装饰器代码通式: 1 def set_fun(func): 2 3 def call_fun(*args,**kwargs): 4 return func(*args,**kwargs) 5 return call_fun 6 7 @set_fun 8 def test(a, b): 9 print(a+b) 10 11 if __name__ == '__main__': 12 test(1, 2) # 调用函数 13 # 运行结果为 3

python 装饰器语法糖(@classmethod @staticmethod @property @name.)原理剖析和运用场景

引用:http://blog.csdn.net/slvher/article/details/42497781 这篇文章系统的介绍这几者之间的关系和区别.有兴趣的朋友可以到上面的链接查看原文,这里我把原文拷贝如下(如有侵权,通知马上删除) ==================================================================== 在阅读一些开源Python库的源码时,经常会看到在某个类的成员函数前,有类似于@staticmethod或@classme

python学习day07 高阶函数 装饰器 语法糖

语法糖对于计算机的运行并没有任何的好处,但是对于程序员的好处是很大的,方便我们写代码,所以称为糖 #******************************装饰器************************* # 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. # 装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景 import time def func1(): print('in f

Python语法糖

语法糖(Syntactic sugar)是英国计算机科学家彼得·约翰·兰达发明的一个术语,指计算机语言中添加的某种语法,这些语法没有给程序增加新功能,但是对于程序员更“甜蜜”.语法糖提供了更易读的编码方式,可以提高开发效率. Python语法糖总结: 1.匿名函数(lambda表达式) 用在不能定义函数的地方,作为一个表达式,实现了函数的功能. 2.filter.map.reduce 3.装饰器(Decorator) 不修改函数定义,而给函数增加功能(常用的用途有输出日志.记录开始和结束时间)

Python中语法糖及带参语法糖

在python中,@符号常被称作语法糖(装饰器),在某函数定义时,用以包装该函数,以达到截取,控制该函数的目的. def d(f): print('d...') k=f #此处保留了传进来的原函数 f def f(x): return k(x)*2 return f #此处不能写成f(x),f是函数句柄,如果带(),则调用,这里只返回句柄. @d def e(x): return x**2print(e(3)) 比如上面代码,@d,就等价于e=d(e),d(e)的返回值为f,f在d中是一个函数句