要不要使用复杂表达式
Perl语言的原作者Larry
Wall曾经说过,伟大的程序员都有三个优点:懒惰、暴躁和自负。乍一看这三个词语没有
一个是褒义词,但在程序员的世界里,这三个词有不同的意义。首先,懒惰会促使程序员
去写一些省事儿的程序来辅助自己或别人更好的完成工作,这样我们就无需做那些重复和
繁琐的劳动;同理能够用3行代码解决的事情,我们也绝不会写出10行代码来。其次,暴
躁会让程序员主动的去完成一些你还没有提出的工作,去优化自己的代码让它更有效率,
能够3秒钟完成的任务,我们绝不能容忍1分钟的等待。最后,自负会促使程序员写出可
靠无误的代码,我们写代码不是为了接受批评和指责,而是为了让其他人来膜拜。
那么接下来就有一个很有意思的问题值得探讨一下,我们需要一个程序从输入的三个数中
找出最大的那个数。这个程序对任何会编程的人来说都是小菜一碟,甚至不会编程的人经
过10分钟的学习也能搞定。下面是用来解决这个问题的Python代码。
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
if a > b:
the_max = a
else:
the_max = b
if c > the_max:
the_max = c
print('The max is:', the_max)
但是我们刚才说了,程序员都是懒惰的,很多程序员都会使用三元条件运算符来改写上面
的代码。
a = int(input('a = '))
b = int(input('b = '))
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运算符的短路特性来模拟出三元操作符,于是在那个
年代,上面的代码是这样写的。
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))