语法糖(Syntactic sugar),顾名思义,就是给专门给语法加的糖。当我们在喝苦咖啡的时候,加上点糖的时候,咖啡的苦少了,多了一丝丝甜意。语法糖也一样,计算机的编程语言的语法就是苦咖啡,当它比较苦的时候加一点语法糖,它就甜了,更有利于人接受了,更简练了。
用专业的话说,他指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
语法糖在各大编程语言中或多或少有些。以语法优雅、简洁著称的python语言,语法糖是体现其优雅性和简洁性的一大表现形式,这篇博文就来列举一下python中常用的语法糖,来体会一下到底为什么“人生苦短,我学python!”。
当我们对于这样应该列表[‘1’,‘2’,‘3’,‘4’]中每个元素要变成int类型,一般我们会这样做:
li = ['1','2','3','4']
li2 = []
for i in li:
li2.append(int(i))
当我们采用列表推导时只需要:
li = ['1','2','3','4']
li = [int(i) for i in li]
列表推导式在我们的应用中非常普遍,我们加大点难度,比如我们需要python初始化一个二维数组的时候可以利用嵌套的列表推导式。
twoArray = [[' ' for i in range(row)] for i in range(col)]
但是大家看简单的列表推导式呢,其实还是相对好理解的,但是看嵌套的列表推导式可读性就差了很多。所以:
简洁性:☆☆☆☆
可读性:☆☆☆
三目运算是各大编程语言中最常见的语法糖之一。python中的三目运算简洁性有余,可读性相对别的语言如:JAVA和C会略差。比如当我们要判断一个变量a的值是不是大于5,大于则打印True否则打印False,用python的一般写法是:
a = 3
if a > 5:
print(True)
else:
print(False)
用java的三目运算符的写法是:
int a = 3;
String b = "";
b = a > 5? "True":"False"
System.out.println(b)
类似这种三目运算符非常好理解,即a>5吗,大于则执行前一句,不满足则执行下一句。而python的三目运算可读性略差于java,见如下代码为pytho的三目运算。
a = 3
print("True") if a>5 else print(False)
python的三目运算把满足条件执行的语句放在了if前面,相比于JAVA等语言的设计,如果一个没有python基础的人看见这个可能一时间看不懂,可读性较差。
简洁性:☆☆☆
可读性:☆☆
当我们需要写一个函数来作为filter函数的参数的时候,正常的写法是:
li = [1,2,3,4,5]
def func(x):
return x>0
filter(func,li)
这个函数非常简单,且基本上不会多次复用,所以我们可以尝试使用匿名函数来代替,匿名函数顾名思义就是没有名字的函数,经常用于不太需要多次复用的函数的构造,经常会结合filter、map等函数。代码如下:
li = [1,2,3,4,5]
filter(lambda x: x>10, li)
简洁性:☆☆☆
可读性:☆☆☆☆
一般来说,交换两个变量的值这个操作正常是要用一个临时变量来接收其中一个值的,代码如下:
a = 1
b = 2
temp = a
a = b
b = temp
而python中可以直接利用此方式交换两个变量的值:
a = 1
b = 2
a ,b = b ,a
简洁性:☆☆☆
可读性:☆☆☆☆