Python对初学者友好和高级功能之间的拉锯战

2021-02-06 19:56:35

Python是我最喜欢的编程语言。自2004年我发现它以来,Python编程成为我最喜欢的爱好。我曾尝试学习其他几种语言,但从未找到像Python这样对初学者友好的语言。正如该博客的读者所知,如今,我对回溯特别感兴趣,并且与大多数人相比,我可能会更加关注Python在该领域的改进:Python在提供给用户的信息中正变得越来越精确。用户出问题时。例如,考虑Python 3.7中的这两个示例

给定该消息,当我们尝试为None分配值时,我们可能希望在尝试为关键字" pass&#34 ;;分配值时看到相同的消息。相反,我们得到了一个不太有用的" invalid语法"。当然,如果您以前阅读过此博客,则在这种情况下,Friendly-traceback可以提供更多有用的信息,您不会感到惊讶。

但是,这不是本文的重点...让我们看看Python 3.8在第一种情况下为我们提供了什么样的信息。如您所见,它更加精确:这是一个确定的改进。同样,可怕的"无效语法"。但是,昨天发布的最新Python版本已大大改善了这一点。同样,更好的错误消息将对不使用Friendly-traceback的初学者[即使他们应该! ;-)]在最新版本中还进行了其他一些类似的改进……但是,这个示例足以说明使Python对初学者更加友好的工作。但是,不幸的是,这还不是全部。

为了使Python对必须处理大量代码的高级用户有用,Python引入了" optional"输入注释。当然,这是绝大多数专业程序员都有用的东西-与像我这样的业余爱好者不同。让我以我今天看到的Twitter帖子为例,说明这一点。首先,我将使用Python 3.8:

如果您了解Python并且没有积极使用类型注释,那么您可能不会对上述内容感到惊讶。现在,如果我们尝试使用Python 3.9+做同样的事情,会发生什么情况!想象一下,您是编写上述代码的初学者:紧接着执行以下操作时,您肯定不会期望出现错误:不幸的是,Friendly-traceback无法(到目前为止!)对此提供任何帮助。编辑:这可能更加令人困惑。 / EDIT理想情况下,我真的很希望是否有可能真正具有" optional"类型注释,以及一种将其关闭的方法(并使其使用会生成异常)。 gather,我发现情况永远不会如此,这是我最不幸的。