Python 是一门用途广泛、易读、而且容易入门的编程语言。
但同时 Python 语法也允许我们做一些很奇怪的事情。
使用 lambda 表达式重写多行函数
这几天总结了Python零基础入门必学语法!赶快行动起来吧!加油!添加小编学习群813542856即可获得10套PDF以及python全套学习资料
众所周知 python 的 lambda 表达式不支持多行代码。但是可以模拟出多行代码的效果。
image.png虽然看起来很奇怪,但是上面的函数可以使用下面的 lambda 表达式函数代替:
image.png永远不要在生产环境写这样的代码 :)
三元运算符
现代的 python 提供了更简便的语法:
image.png
也可以通过下面的方式重写:
顺便说一下,下面的变体是错误的:
image.png
通过列表推导式移除重复的元素
让我们来把字符串 x = 'tteesstt' 转换成 'test' 吧。
1.在原字符串中和上一个字符比较:
image.png2.把前一个字符保存到临时变量中:
image.png3.在新字符串中和上一个字符比较:
image.png4.通过 reduce 函数和 lambda 表达式:
image.png通过列表推导式获得斐波拉契数列
1.把中间值保存在列表中
image.png2.把中间值保存到字典中:
image.png3.通过 reduce 函数和 lambda 表达式:
image.png4.速度最快的变体:
image.png使用列表推导式产生死循环
[a.append(b) for a in [[None]] for b in a]
- 复制列表:
2.移除/替换 列表中的任意元素:
image.png3.在列表的开头添加元素:
image.png4.在列表的尾部添加元素:
image.png5.反转列表:
l = [1, 2, 3]
l[:] = l[::-1]
替换方法字节码
Python 阻止替换类实例中的方法,因为 python 给类实例中的方法赋予了只读属性:
image.png注意! 这不仅对当前的实例有影响,而且对整个类都有影响(准确的说是与这个类绑定的函数)(译者注:此处应该是笔误,推测作者原意是:准确的说是与这个函数绑定的所有类),并且所有其他的实例也会受到影响:
image.png
让可变元素作为函数参数默认值
把可变对象作为函数参数的默认值是非常危险的一件事,并且在面试中有大量关于这方面棘手的面试问题。但这一点对于缓存机制非常有帮助。
1.阶乘函数:
image.png2.斐波拉契数列:
image.png
网友评论