语法糖不是糖,而是编写代码中的一种特殊的写法。
之所以叫语法「糖」,是因为加糖后的代码写起来很爽,包括但不限于:代码更简洁流畅,代码更语义自然... 写得爽,看着爽,就像吃了糖。
例如当我们需要定义一个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
这样我们只需要关注对于文件的读取方式和具体的操作数据上来,不需要关注关闭和处理异常等其他事情了