我知道在一个字符串中寻找最长的单词已经被问过很多次了,但是我想知道以下方法之间的区别,以及为什么人们会使用方法a而不是方法B,或者反之亦然。在
方法A
def LongestWord(sen):
lw = ''
w = ''
for c in sen:
if c.isalpha():
w += c
else:
if len(w) > len(lw):
lw = w
w = ''
if len(w) > len(lw):
lw = w
return lw
VS方法B
^{pr2}$再一次,我的目标是询问哪种方法更稳定,因为没有更好的词汇选择,以及为什么。如果你有自己的选择,请把它和你的解释一起贴出来。谢谢您!在
有不同的原因。 最重要的是,作为一个软件开发人员,您必须使用最简单、最容易理解的方式来编写函数。 方法B简洁明了,易于理解。方法A太复杂,难以理解:如果不知道函数的名称,甚至很难知道它是做什么的。在
这让我们看到了另一个方面:太难阅读的代码太难调试。方法B正确吗?一目了然,是的。方法正确吗?很难理解。我们可以编写一个测试,看看这两个函数是否都能工作(我们应该这样做),但是如果一个函数碰巧不起作用,那么调试方法B要比方法a容易得多
最后但并非最不重要的是,方法B快10倍
当我看第二种方法时,我可以立即看到发生了什么——一个字符串被连续的空格分割,然后返回最长的子字符串。在
当我看第一种方法时,要想弄清楚到底发生了什么,需要做更多的工作。在
关键是python提供了非常强大的实用程序来完成这些简单的任务——它使代码更易于编写、更易于阅读、更不容易出错等等。学会使用常见的习惯用法和函数是(IMHO)“pythonic”的本质
首先,第二种方法是非常可读的,而第一种方法不是。显然,该方法(具有max方法的知识)执行函数名所述的操作。编写可读的代码是我最喜欢的Python部分。在
第二,第一种方法负责定义单词是什么。部门
将使
2spooky4me
比spookytoo
短,因为LongestWord
不将单个整数字符作为单词(ex. '2'.isalpha() == False)
的一部分计算在内。对于使用此代码的人来说,这可能是意外的行为。在最后,第二个示例更优雅地使用Pythons内置方法(例如max的特性,而不仅仅是len和二进制运算符),我相信这是语言设计的一个重要目标。在
相关问题 更多 >
编程相关推荐