为了账号安全,请及时绑定邮箱和手机立即绑定

Python进阶路径-从学徒到大师

/ 猿问

Python进阶路径-从学徒到大师

吃鸡游戏 2019-12-06 15:46:27

我已经学习,工作和玩Python一年半了。随着生物学家逐渐转向生物信息学,这种语言一直是我在实验室中所做的所有重大贡献的核心。我或多或少地爱上了Python允许我表达漂亮的解决方案的方式,也喜欢这种语言的语义,这种语义允许从思想到可行的代码的自然流动。

我想知道的是您对在此论坛或其他论坛中很少见到的一种问题的回答。对我来说,这个问题似乎对Python改进道路上的每个人都很重要,但是谁想知道下一步应该做什么。

让我总结一下我不想先问的内容;)

  • 我不想知道如何快速学习Python

  • 我也不想找出了解该语言的最佳方法

  • 最后,我不想知道一种“全能的窍门”方法。

我想知道您的看法是:

从徒弟身份到专家地位,您会建议Python入门者采取哪些步骤(无论您的专业知识要求如何,都可以随时停下来),以使一个人不断地提高自己,成为越来越优秀的Python编码器。SO上的某些人似乎因其Python的出色表现值得敬拜,请赐教:)

我喜欢的答案(但可以让读者感到惊讶:P)的格式大致如下:

  • 阅读此内容(例如:python教程),请注意此类详细信息

  • 如此众多的时间/问题/代码行的代码

  • 然后,阅读此书(例如:这本书或那本书),但是这次要注意这一点

  • 解决一些现实生活中的问题

  • 然后,继续阅读Y。

  • 一定要掌握这些概念

  • X时间代码

  • 回到这样的基础知识或进一步...

  • (你明白了:)

我真的很想知道您的意见,以便在不断发展的过程中(当然,要做出适当的努力)在各个阶段应该准确地关注哪些方面。如果您来自特定的专业领域,请讨论在该领域中您认为合适的路径。

编辑:感谢您的大力支持,我又回到了Python改进的轨道上!我真的很感激!


查看完整描述

3 回答

?
眼眸繁星

我认为Python精通的过程是这样的:

  1. 发现清单的理解

  2. 发现发电机

  3. 一体化的地图,减少,过滤器,ITER,范围,XRANGE经常到你的代码

  4. 发现装饰者

  5. 编写递归函数,很多

  6. 探索itertools和functools

  7. 阅读真实世界Haskell(免费在线阅读)

  8. 用大量的高阶函数,递归等重写所有旧的Python代码。

  9. 每当他们的小伙伴向您展示Python类时,他们都会感到烦恼。声称它可以“更好”地实现为字典以及一些功能。接受函数式编程。

  10. 重新发现策略模式,然后从命令代码中发现所有这些事情,您很难在Haskell之后忘记。

  11. 找到平衡。


查看完整回答
反对 回复 2019-12-06
?
HUH函数

扩展您的Python知识的一种好方法是挖掘您已经使用的库,平台和框架的源代码。


例如,如果您正在Django上构建站点,则可以通过查看Django如何实现所讨论的功能来回答很多可能困扰您的问题。


这样,您将继续学习新的习惯用法,编码样式和Python技巧。(有些会好,有些会坏。)


并且,当您在源代码中看到一些您不了解的Pythony时,请跳至#python IRC频道,您会发现很多“语言律师”很乐于解释。


这些年来的这些细微解释的积累使人们对该语言及其所有来龙去脉有了更深入的了解。


查看完整回答
反对 回复 2019-12-06
?
慕盖茨9453107

了解(更深入地)关于内存管理的Python数据类型及其作用


正如社区中的一些人所知道的,我教授Python课程,其中最受欢迎的课程是综合性的Intro + Intermediate课程以及介绍各种应用程序开发领域的“高级”课程。


通常,我会被问到一个非常类似的问题:“我应该上入门课程还是高级课程?我已经在Python编程上工作了1-2年,我认为入门课程对我来说太简单了,所以我会想直接跳到高级课程... 您会推荐哪门课程?”


为了回答他们的问题,我探究了他们在这方面的实力-不是说这确实是衡量他们是否准备好参加任何高级课程的最佳方法,而是要了解他们对Python对象和对象的基本了解程度。内存模型,这是由不仅是初学者,而且还超出初学者的人编写的许多 Python错误的原因。


为此,我将他们指向一个简单的两部分测验问题: 例1:x = 42; y = x;  x + = 1; 打印x,y Ex2:x = [1,2,3]; y = x; x [0] = 4;打印x,y


很多时候,他们都能得到输出,但是为什么对响应更困难,更重要……我将输出权衡为答案的20%,而“为什么”获得80%的信用。如果他们不能理解为什么,无论他们有什么Python经验,我都会引导人们去参加综合性的入门级+中级课程,因为我在对象和内存管理上进行了一次讲座,以至于您应该能够回答这个问题。输出以及为什么具有足够的信心。(只是因为您知道1-2年后Python的语法并没有使您准备超越“初学者”标签,除非您对Python的工作原理有了更好的了解。)


要求类似答案的后续查询就更加困难,例如,


例子3


x = ['foo', [1,2,3], 10.4]

y = list(x) # or x[:]

y[0] = 'fooooooo'

y[1][0] = 4

print x

print y

我建议的下一个主题是很好地理解引用计数,了解“ interning”的含义(但不一定要使用它),了解浅层和深层副本(如上述示例3所示),最后是各种类型和类型之间的相互关系。语言的构造,即列表与元组,字典与集合,列表理解与生成器表达式,迭代器与生成器等;但是所有其他建议在另一时间都已发布。希望这对您有所帮助!:-)


ps。我同意其他与内省和研究其他项目的源代码更加亲密的答复,并在两个建议中都添加了强烈的“ +1”!


pps。顺便问一问。我希望我一开始能很聪明地问这样的事情,但是那是很久以前的事了,现在我正尝试通过多年的全职Python编程来帮助其他人!


查看完整回答
反对 回复 2019-12-06

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信