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