3 回答
TA贡献1873条经验 获得超9个赞
我认为Python精通的过程是这样的:
发现清单的理解
发现发电机
一体化的地图,减少,过滤器,ITER,范围,XRANGE经常到你的代码
发现装饰者
编写递归函数,很多
探索itertools和functools
阅读真实世界Haskell(免费在线阅读)
用大量的高阶函数,递归等重写所有旧的Python代码。
每当他们的小伙伴向您展示Python类时,他们都会感到烦恼。声称它可以“更好”地实现为字典以及一些功能。接受函数式编程。
重新发现策略模式,然后从命令代码中发现所有这些事情,您很难在Haskell之后忘记。
找到平衡。
TA贡献1836条经验 获得超4个赞
扩展您的Python知识的一种好方法是挖掘您已经使用的库,平台和框架的源代码。
例如,如果您正在Django上构建站点,则可以通过查看Django如何实现所讨论的功能来回答很多可能困扰您的问题。
这样,您将继续学习新的习惯用法,编码样式和Python技巧。(有些会好,有些会坏。)
并且,当您在源代码中看到一些您不了解的Pythony时,请跳至#python IRC频道,您会发现很多“语言律师”很乐于解释。
这些年来的这些细微解释的积累使人们对该语言及其所有来龙去脉有了更深入的了解。
TA贡献1772条经验 获得超6个赞
了解(更深入地)关于内存管理的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编程来帮助其他人!
添加回答
举报