Python 之语法糖

目录

定义及意义

示例

赋值

索引与切片

条件表达式

map() 函数

with open()

format() 函数

匿名函数 lambda

推导式


        今天自学时听老师讲到“语法糖”,有点儿迷茫,赶紧忍住口水滴答的冲动,向度娘请教。

定义及意义

        语法糖(Syntactic sugar),也译为糖衣语法,由英国计算机科学家彼得·约翰·兰达发明的一个术语,指计算机语言中添加的某种语法。这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。

        之所以叫“语法”糖,不只是因为加糖后的代码功能与加糖前保持一致,更重要的是,糖在不改变其所在位置的语法结构的前提下,实现了运行时的等价。可以简单理解为,加糖后的代码编译后跟加糖前一致。

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

        有人将语法糖归类为奇技淫巧,需要声明的是,“语法糖”这个词绝非贬义,它不是糖衣炮弹,更不是口蜜腹剑,它可以给编码带来实实在在的方便,也可以实实在在提高编码的效率,更重要的,在性能上也不会带来损失。

        可见,语法糖是约定俗成的,为编译器所认可的,可以带来方便快捷的,编程语法。一定程度上而言,语法糖可以呈现于书本,流通于码界,也可以诞生于指尖。窃以为,能够带来编码便利的语法,皆可称为糖。

        Python 中语法糖随处可见,宛如汉语中的成语和诗词,浩如星海,不胜枚举。本文仅取沧海数粟,供学习参考。

示例

赋值

a, b = b, a
a, b, c = 1, 2, 3

索引与切片

        索引和切片是 python 序列的拿手好戏,应用广泛。 

详见:Python 切片 [-1:],[:-1] 和 [::-1] 之理解适用序列的索引和切片操作https://blog.csdn.net/iprobobo/article/details/123456004

条件表达式

a if b else c

详见:Python 之条件表达式左?还是右?,true 是个问题https://blog.csdn.net/iprobobo/article/details/123537662

map() 函数

s = 'Shanghai'
l = list(map(str, s))

详见:Python map() 函数之举重若轻映射的魅力https://blog.csdn.net/iprobobo/article/details/122798133

with open()

with open(file_name, 'r', encoding='utf-8') as f:
    print(f.read())

format() 函数

format() 函数常用于格式化字符串,功能非常强大。

>>> '{1:.2f}, {0:.3f}'.format(3.1415926, 0.61803)
'0.62, 3.142'

详见:Python 字符串格式化之 .format()信手拈来https://blog.csdn.net/iprobobo/article/details/123584069 

匿名函数 lambda

        lambda 是一个很有特点的关键字,python 利用其来来创建匿名函数,活用该函数可以轻易解决很多问题。

        例如,将一个学校的学生(student)按年级(grade)、身高(height)逆序排列,只需要一行代码:

student.sort(key = lambda x: (['grade'], ['height']), reverse = True)

        再如将列表(list)对象排序,要求正数居前,负数殿后,且绝对值从小到大:

>>> list = [1, -2, 3, -4, 5, -6, 7, -8]
>>> list.sort(key = lambda x: (x < 0, abs(x)))
>>> list
[1, 3, 5, 7, -2, -4, -6, -8]

详见:Python 匿名函数之 lambda解 lambda 之惑,有这一篇就够了https://blog.csdn.net/iprobobo/article/details/123591952

推导式

        推导式是 Python 中常见的语法糖,其中最常见的为列表推导式,可用来过滤、处理列表中的子项并输出一个新的列表。 

>>> a = [i for i in range(10) if i % 2 != 0]
>>> print(a)
[1, 3, 5, 7, 9]

详见:Python 之推导式常用的语法糖https://blog.csdn.net/iprobobo/article/details/123582135

 

        ……

        还有很多很多语法糖,感兴趣的可以跟帖讨论


你可能感兴趣的:(Python语言学习笔记,python,语法糖,Syntactic,sugar)