|
|
@@ -15,7 +15,6 @@ else:
|
|
|
if c > the_max:
|
|
|
the_max = c
|
|
|
print('The max is:', the_max)
|
|
|
-
|
|
|
```
|
|
|
|
|
|
但是我们刚才说了,程序员都是懒惰的,很多程序员都会使用三元条件运算符来改写上面的代码。
|
|
|
@@ -27,7 +26,6 @@ c = int(input('c = '))
|
|
|
the_max = a if a > b else b
|
|
|
the_max = c if c > the_max else the_max
|
|
|
print('The max is:', the_max)
|
|
|
-
|
|
|
```
|
|
|
|
|
|
需要说明的是,Python在2.5版本以前是没有上面代码第4行和第5行中使用的三元条件运算符的,究其原因是Guido van Rossum(Python之父)认为三元条件运算符并不能帮助 Python变得更加简洁,于是那些习惯了在C/C++或Java中使用三元条件运算符(在这些语言中,三元条件运算符也称为“Elvis运算符”,因为`?:`放在一起很像著名摇滚歌手猫王Elvis的大背头)的程序员试着用`and`和`or`运算符的短路特性来模拟出三元操作符,于是在那个年代,上面的代码是这样写的。
|
|
|
@@ -39,7 +37,6 @@ c = int(input('c = '))
|
|
|
the_max = a > b and a or b
|
|
|
the_max = c > the_max and c or the_max
|
|
|
print('The max is:', the_max)
|
|
|
-
|
|
|
```
|
|
|
|
|
|
但是这种做法在某些场景下是不能成立的,且看下面的代码。
|
|
|
@@ -60,7 +57,6 @@ a = int(input('a = '))
|
|
|
b = int(input('b = '))
|
|
|
c = int(input('c = '))
|
|
|
print('The max is:', (a if a > b else b) if (a if a > b else b) > c else c)
|
|
|
-
|
|
|
```
|
|
|
|
|
|
但是,这样做真的好吗?如此复杂的表达式是不是让代码变得晦涩了很多呢?我们发现,在实际开发中很多开发者都喜欢过度的使用某种语言的特性或语法糖,于是简单的多行代码变成了复杂的单行表达式,这样做真的好吗?这个问题我也不止一次的问过自己,现在我能给出的答案是下面的代码,使用辅助函数。
|
|
|
@@ -74,7 +70,6 @@ a = int(input('a = '))
|
|
|
b = int(input('b = '))
|
|
|
c = int(input('c = '))
|
|
|
print('The max is:', the_max(the_max(a, b), c))
|
|
|
-
|
|
|
```
|
|
|
|
|
|
上面的代码中,我定义了一个辅助函数`the_max`用来找出参数传入的两个值中较大的那一个,于是下面的输出语句可以通过两次调用`the_max`函数来找出三个数中的最大值,现在代码的可读性是不是好了很多。用辅助函数来替代复杂的表达式真的是一个不错的选择,关键是比较大小的逻辑转移到这个辅助函数后不仅可以反复调用它,而且还可以进行级联操作。
|
|
|
@@ -86,6 +81,5 @@ a = int(input('a = '))
|
|
|
b = int(input('b = '))
|
|
|
c = int(input('c = '))
|
|
|
print('The max is:', max(a, b, c))
|
|
|
-
|
|
|
```
|
|
|
|