稚昂长

不如意事常八九 可与言者无二三

Python爱好者非常喜欢Python语言中的许多(越来越多)高级功能。在这些人的眼中,可以编写普通开发人员无法理解的高级功能。

何出此言?

  1. 代码越简洁,逻辑越清晰,出错的可能性就越小。
  1. 在团队合作中,您的代码不仅由您自己维护,而且是减少他人阅读/理解代码逻辑的成本的一个很好的优点。
  2. 简单的代码将只使用最基本的语法糖,复杂的高级功能将具有更多的依赖项(例如语言版本)
    在本文,我将列出我所看到的令人眼花缭乱乱的操作。如果您是Python爱好者,则可以学习一些很酷的代码编写技能,但要学习,希望您能区分两种情况。
    注意:无论您是寻找工作还是Python爱好,请记住:项目开发经验将永远是核心。所以需要广泛学习、实践。

原代码
这是一段非常简单的通过年龄判断一个人是否成年的代码,由于代码行数过多,有些人就不太愿意这样写,因为这体现不出自己多年的 Python 功力。

1
2
3
4
if age > 18:
return "已成年"
else:
return "未成年"

下面列举了六种这段代码的变异写法,种种都精简 ,单独拿出来比较好理解,放在工程代码里,没用过这些学法的人,一定会看得一脸懵,理解了之后,又不经意大呼:wow,还可以这样写?,而后就要开始骂街了:这是给人看的代码? (除了第一种之外)

第一种

语法:

<on_true> if <condition> else <on_false>

例子

1
2
3
4
5
6
7
8
9
10
11
12
>>> 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>

例子

1
2
3
4
5
6
7
8
>>> msg1 = age1 > 18 and "已成年" or "未成年"
>>> msg2 = "已成年" if age2 > 18 else "未成年"
>>>
>>> print(msg1)
已成年
>>>
>>> print(msg2)
未成年

第三种

语法

(<on_true>, <on_false>)[condition]

例子

1
2
3
4
5
6
7
8
>>> msg1 = ("未成年", "已成年")[age1 > 18]
>>> print(msg1)
已成年
>>>
>>>
>>> msg2 = ("未成年", "已成年")[age2 > 18]
>>> print(msg2)
未成年

第四种

语法

(lambda: <on_false>, lambda:<on_true>)[<condition>]()

例子

1
2
3
4
5
6
7
>>> msg1 = (lambda:"未成年", lambda:"已成年")[age1 > 18]()
>>> print(msg1)
已成年
>>>
>>> msg2 = (lambda:"未成年", lambda:"已成年")[age2 > 18]()
>>> print(msg2)
未成年

第五种

语法:

{True: <on_true>, False: <on_false>}[<condition>]

例子:

1
2
3
4
5
6
7
>>> msg1 = {True: "已成年", False: "未成年"}[age1 > 18]
>>> print(msg1)
已成年
>>>
>>> msg2 = {True: "已成年", False: "未成年"}[age2 > 18]
>>> print(msg2)
未成年

第六种

语法

((<condition>) and (<on_true>,) or (<on_false>,))[0]

例子

1
2
3
4
5
6
7
>>> msg1 = ((age1 > 18) and ("已成年",) or ("未成年",))[0]
>>> print(msg1)
已成年
>>>
>>> msg2 = ((age2 > 18) and ("已成年",) or ("未成年",))[0]
>>> print(msg2)
未成年

 评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 volantis 作为主题 。