慕盖茨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的工作原理有了更好的了解。)要求类似答案的后续查询就更加困难,例如,例子3x = ['foo', [1,2,3], 10.4]y = list(x) # or x[:]y[0] = 'fooooooo'y[1][0] = 4print xprint y我建议的下一个主题是很好地理解引用计数,了解“ interning”的含义(但不一定要使用它),了解浅层和深层副本(如上述示例3所示),最后是各种类型和类型之间的相互关系。语言的构造,即列表与元组,字典与集合,列表理解与生成器表达式,迭代器与生成器等;但是所有其他建议在另一时间都已发布。希望这对您有所帮助!:-)ps。我同意其他与内省和研究其他项目的源代码更加亲密的答复,并在两个建议中都添加了强烈的“ +1”!pps。顺便问一问。我希望我一开始能很聪明地问这样的事情,但是那是很久以前的事了,现在我正尝试通过多年的全职Python编程来帮助其他人!