
原标题:Python学习教程:用函数仍是用杂乱的表达式,值得优异的你考虑
今日这期的Python学习教程,值得每一个优异的你考虑,你用函数仍是甘愿用杂乱的表达式?
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 = '))
the_max = a > b and a or b
the_max = c > the_max and c or the_max
print('The max is:', the_max)
可是这种做法在某些场景下是不能成立的,且看下面的代码。
a = 0
b = -100
# 下面的代码原本预期输出a的值,成果却得到了b的值
# 由于a的值0在进行逻辑运算时会被视为False来处理
print(True and a or b)
# print(a if True else b)
所以在Python 2.5今后引入了三元条件运算符来防止上面的危险(上面代码被注释掉的最终一句话)。那么,问题又来了,上面的代码还能够写得更简略吗?答案是必定的。
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)
可是,这样做真的好吗?如此杂乱的表达式是不是让代码变得不流畅了许多呢?咱们发现,在实践开发中许多开发者都喜爱过度的运用某种言语的特性或语法糖,所以简略的多行代码变成了杂乱的单行表达式,这样做真的好吗?这个问题我也不止一次的问过自己,现在我能给出的答案是下面的代码,运用辅佐函数。
def the_max(x, y):
return x if x > y else y
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函数来找出三个数中的最大值,现在代码的可读性是不是好了许多。用辅佐函数来代替杂乱的表达式真的是一个不错的挑选,关键是比较巨细的逻辑转移到这个辅佐函数后不只能够重复调用它,并且还能够进行级联操作。
当然,许多言语中比较巨细的函数底子没有必要自己来完成(一般都是内置函数),Python也是如此。Python内置的max函数利用了Python对可变参数的支撑,答应一次性传入多个值或许一个迭代器并找出那个最大值,所以上面评论的问题在Python中也便是一句话的事,可是从杂乱表达式到运用辅佐函数简化杂乱表达式这个思维对错常值得玩味的,所以共享出来跟我们做一个沟通。
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
print('The max is:', max(a, b, c))
对于此,你是怎么看的呢?更多的Python学习教程也会持续跟我们共享
重视并留言:Python,能够免费收取全套视频版Python学习教程!先到先得,不食言!
责任编辑:
