Python爱好者非常喜欢Python语言中的许多(越来越多)高级功能。在这些人的眼中,可以编写普通开发人员无法理解的高级功能。
何出此言?
- 代码越简洁,逻辑越清晰,出错的可能性就越小。
- 在团队合作中,您的代码不仅由您自己维护,而且是减少他人阅读/理解代码逻辑的成本的一个很好的优点。
- 简单的代码将只使用最基本的语法糖,复杂的高级功能将具有更多的依赖项(例如语言版本)
在本文,我将列出我所看到的令人眼花缭乱乱的操作。如果您是Python爱好者,则可以学习一些很酷的代码编写技能,但要学习,希望您能区分两种情况。
注意:无论您是寻找工作还是Python爱好,请记住:项目开发经验将永远是核心。所以需要广泛学习、实践。
原代码
这是一段非常简单的通过年龄判断一个人是否成年的代码,由于代码行数过多,有些人就不太愿意这样写,因为这体现不出自己多年的 Python 功力。
1 | if age > 18: |
下面列举了六种这段代码的变异写法,种种都精简 ,单独拿出来比较好理解,放在工程代码里,没用过这些学法的人,一定会看得一脸懵,理解了之后,又不经意大呼:wow,还可以这样写?,而后就要开始骂街了:这是给人看的代码? (除了第一种之外)
第一种
语法:
<on_true> if <condition> else <on_false>
例子
1 | >>> age1 = 20 |
第二种
语法
<condition> and <on_true> or <on_false>
例子
1 | >>> msg1 = age1 > 18 and "已成年" or "未成年" |
第三种
语法
(<on_true>, <on_false>)[condition]
例子
1 | >>> msg1 = ("未成年", "已成年")[age1 > 18] |
第四种
语法
(lambda: <on_false>, lambda:<on_true>)[<condition>]()
例子
1 | >>> msg1 = (lambda:"未成年", lambda:"已成年")[age1 > 18]() |
第五种
语法:
{True: <on_true>, False: <on_false>}[<condition>]
例子:
1 | >>> msg1 = {True: "已成年", False: "未成年"}[age1 > 18] |
第六种
语法
((<condition>) and (<on_true>,) or (<on_false>,))[0]
例子
1 | >>> msg1 = ((age1 > 18) and ("已成年",) or ("未成年",))[0] |