程序中的奇技淫巧--语法糖

简介: 程序中的奇技淫巧--语法糖

640.jpg什么是语法糖?

   

提起语法糖,可能很多不是编程老鸟的朋友可能一脸懵圈,而且编程老鸟也不一定用过,语法糖如果我们能够熟练的使用,将会对我们的工作以及学习有极大的帮助,你的代码也会比其它人的简洁!

 

在计算机科学中,是指编程语言中可以更容易的表达一个操作的语法,它可以使程序员更加容易去使用这门语言:操作可以变得更加清晰、方便,或者更加符合程序员的编程习惯。

语法糖是语言中的一个构件,当去掉该构件后,并不影响语言的功能和表达能力。

简而言之,语法是一种便捷写法。

为了使大家更加清晰的了解语法糖,先给大家举一个小例子?

>>>>  提起语法糖,假设我们想要比较两个数字中哪一个比较大,我们会怎么做?

640.png


正常情况下我们都会使用上图这种写法,但是实现这个功能有很多种写法,到底怎么样才可以称作语法糖呢?

640.png


PYTHON中一些常见的语法糖:

640.png


可以看到这些语法,在其它语言里通常不会出现的。但是在Python中却神奇的被支持了,所以这些都是当之无愧的Python语法糖。

WITH语法糖


with语法糖实现的是一个上下文管理器,它主要的特点就是帮助我们自动管理上下文的衔接。即在需要的时候传给我们,不需要的时候自动关闭上下文对象。需要注意的是:使用with语法糖是有条件的。即其后跟的对象必须要实现__enter__和__exit__这2个魔法属性。

640.png


ElSE语法糖


Python中提供一类else的语法,它可以在原有语法基础之上,支持更多一种情况的选择。主要有for-else,while-else,try-else。需要注意的是,for-else和while-else需要和break语句配合时使用。


640.png640.png640.png

yiedld表达式


yield语法也是Python中比较有特点的语法糖,可以说是特有的。虽然其它语言有实现类似机制的功能。yield是Python中实现**协程(coroutine)**的一个重要基础。

1.

640.png

2.装饰器是学习Python绕不过去的坎。就像学习Java要理解面向对象和设计模式一样。学习Python,你就应该要掌握好闭包、生成器、装饰器等相关知识。而对于编写高并发程序时则要掌握协程相关知识。


640.png

相关文章
|
人工智能 前端开发 JavaScript
【炫技的代码写法】
【炫技的代码写法】
|
4月前
|
开发者 Python
Python元类实战:打造你的专属编程魔法,让代码随心所欲变化
【7月更文挑战第7天】Python的元类是编程的变形师,用于创建类的“类”,赋予代码在构建时的变形能力。
57 1
|
4月前
|
程序员 Python
从零到一,彻底掌握Python闭包与装饰器的精髓,成为编程界的隐藏Boss
【7月更文挑战第7天】探索Python编程的两大基石:闭包与装饰器。闭包是内部函数记住外部作用域的变量,如`make_multiplier_of`返回的`multiplier`,它保持对`n`的引用。装饰器则是函数工厂,接收函数并返回新函数,如`my_decorator`,它在不改变原函数代码的情况下添加日志功能。掌握这些,让代码更优雅,效率更高,助你成为编程高手。
32 3
|
4月前
|
Python
Python黑魔法揭秘:闭包与装饰器的高级玩法,让你代码飞起来
【7月更文挑战第7天】Python的闭包和装饰器是提升代码效率的神器。闭包是能记住外部作用域变量的内部函数,常用于动态函数创建。示例中,`make_multiplier_of`返回一个保留`n`值的闭包。装饰器则是一个接收函数并返回新函数的函数,用于在不修改原函数情况下添加功能,如日志或性能追踪。`@my_decorator`装饰的`say_hello`函数在执行时会自动加上额外操作。掌握这两者,能让Python代码更优雅、强大。**
33 1
|
4月前
|
Python
告别代码冗余!Python闭包与装饰器如何让你秒变代码优化大师?
【7月更文挑战第6天】Python的闭包和装饰器是解决代码冗余的利器。闭包,如匿名函数,记忆外部作用域变量,实现代码封装。例如,`make_multiplier_of`生成特定乘法函数,避免重复。装饰器如`@my_decorator`,不修改原函数,添加额外功能,如在函数调用前后打印信息。两者结合,提升代码灵活性和复用性,是优化和整洁代码的关键。
27 0
|
自然语言处理 JavaScript 前端开发
编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(三)模拟执行
编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(三)模拟执行
100 0
|
6月前
|
JavaScript 前端开发
JavaScript开发基础问题:解释一下变量提升。
JavaScript开发基础问题:解释一下变量提升。
64 5
|
JavaScript 前端开发 Java
CocosCreator 面试题(三)JavaScript闭包原理和作用
CocosCreator 面试题(三)JavaScript闭包原理和作用
180 0
|
机器学习/深度学习 自然语言处理 算法
程序员的炫技代码写法
程序员的炫技代码写法
|
设计模式 JavaScript 前端开发
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(四)
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(四)