语法糖不是糖,而是编写代码中的一种特殊的写法。

之所以叫语法「糖」,是因为加糖后的代码写起来很爽,包括但不限于:代码更简洁流畅,代码更语义自然... 写得爽,看着爽,就像吃了糖。

例如当我们需要定义一个10亿的数时,最普通的写法就是

a = 1000000000

虽然挺简单,但是以后再去看这一行代码都得数一下到底有多少个零,是不是挺难受的。那么就有了下面这种写法:

a = 10 * 10000 * 10000

一万乘一万得一亿,再乘10得十亿,看起来就舒服多了,但是这也会增加额外的运算负担,毕竟解释器是先算出来再赋值的。对于这种情况的话Python可以这样写:

a = 1_000_000_000

里面的下划线会被Python自动给忽略掉,从而达到类似于1,000,000,000的显示效果,是不是清爽很多呢?

这就是语法糖的例子与好处,接下来继续看Python中有哪些甜甜的语法糖吧~


1. 判断变量范围时

这是一种很常见的判断,一般用于IF语句中。例如当我们需要判断成绩是否在85~100范围内,是则给与优秀,否则给与一般。用Java写的话得两个比较语句,并且用逻辑运算符连起来,比如

int a = 90;
if(a <= 100 && a >= 85){
    System.out.println("优秀");
}

而使用Python,则可以直接一步到位

a = 90
if 90 <= a <= 100:
    print("优秀")

非常贴近我们日常的写法,相当清爽


2. 交换两个变量时

在写各类算法的时候,这也是经常使用的语句,一般来说我们需要使用三个变量来完成交换,例如

int a = 1, b = 2;
int temp;
temp = a;
a = b;
b = temp;

而在Python中可以直接这样写

a = 1; b = 2
a, b = b, a

奇怪的知识增加了.jpg


3. 拼接列表时

如果我们有两个数组,想让他们拼接成一个列表

a = [1, 2, 3]
b = [4, 5, 6, 7, 8, 9]
for i in b:
    a.append(i)
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

这是正常人的思维,但是Python告诉你你想多啦,我还可以直接这样写

a = [1, 2, 3]
b = [4, 5, 6, 7, 8, 9]
a + b
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

4. 列表切片

对于上面的列表a,如果想取出从正数第三到倒数第二个数字该如何操作呢?

直接使用带负号的索引就行了。。

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a[3, -2]
# a = [4, 5, 6, 7]

甚至还能这样写

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a[-1]
# 9
a[:3]
#[1,2,3]
a[-3:]
#[7,8,9]

5. 元组拆解包

对于一个元组,想要提取里面的内容时

a = (1,2,3)
x = a[0]
y = a[1]
z = a[2]

使用语法糖后可以这样写

a = (1,2,3)
x,y,z = a

同理,打包时也可以这样写

x = 1; y = 2; z = 3
a = (x,y,z)

6. 列表推导式

如果我们想对某个列表中的每个数都加上一个值时,一般是这样写的

a = [1,2,3,4]
b = []
for i in a:
    b.append(a+233)

实际开发中这种需求很多,Python就给了我们一种语法糖来解决

a = [1, 2, 3, 4]
b = [ i+233 for i in a]

7. 使用with语句进行IO操作

一个普通的IO操作一般是这样写的

f = open('test.txt', r)
data = f.read()
# using data
f.close()

Python提供了with语句,可以帮我们省略掉close和处理异常等一些操作

with open('test.txt', r) as f:
    data = f.read()
# using data

这样我们只需要关注对于文件的读取方式和具体的操作数据上来,不需要关注关闭和处理异常等其他事情了

Last modification:May 11th, 2021 at 10:04 pm