![]() |
1
471
我认为掌握python的过程是这样的:
|
![]() |
2
108
一个提高您的Python知识的好方法是 深入研究您已经使用的库、平台和框架的源代码。 例如,如果您正在 Django ,通过查看Django如何实现所讨论的特性,可以回答许多可能会让您感到困惑的问题。 这样你就可以继续 学习新的习惯用法、编码风格和Python技巧 . (有些是好的,有些是坏的。) 当你在源头上看到你不理解的东西时, 跳到python irc频道 你会发现很多“语言律师”乐于解释。 多年来,这些小小的澄清积累起来,导致人们对语言及其所有的内在和外在都有了更深的理解。 |
![]() |
3
92
更深入地了解python的数据类型及其在内存管理方面的角色 正如你们社区中的一些人所知道的, I teach Python courses 最受欢迎的课程是综合介绍+中级课程,以及介绍各种应用程序开发领域的“高级”课程。 经常有人问我一个类似的问题:“我应该参加你的入门课程还是高级课程?”我已经为python编程了1-2年了,我觉得介绍版对我来说太简单了,所以我想直接跳到高级版本……哪道菜可以 你 推荐?“ 为了回答他们的问题,我调查了他们在这方面有多强——不是说这确实是衡量他们是否准备好接受任何高级课程的最好方法,而是看看他们对Python对象和内存模型的基本知识有多好,这是 许多的 python bugs是由那些不仅是初学者,而且是那些超越了这一点的人编写的。
为了做到这一点,我将他们引向这个由两部分组成的简单测验问题:
很多时候,他们能够得到输出,但是 为什么 是更困难和更重要的反应…我将把输出作为答案的20%,而“为什么”得到80%的学分。如果他们不知道原因,不管他们有多么的python体验,我总是引导人们学习全面的intro+中间课程,因为我花了一堂关于对象和内存管理的讲座,你应该能够用输出来回答,为什么用足够的C来回答。有信心。(仅仅因为你在1-2年后就知道了python的语法,在你对python如何在封面下工作有了更深入的了解之前,你还没有准备好超越“初学者”标签。) 要求类似答案的后续调查甚至更加困难,例如: 实施例3
我建议的下一个主题是,更好地理解引用计数,学习“interning”的含义(但不一定要使用它),学习浅拷贝和深拷贝(如上面的示例3所示),以及语言中各种类型和构造之间的相互关系,即.lists vs.tuples、dicts vs.set、list expressions vs.generator expressions、iterators vs.generator等;不过,所有其他建议都是另一个帖子。希望这对我们有所帮助!-) 附言:我同意其他的回答,以更密切地了解内省,以及研究其他项目的源代码,并添加一个强大的“+1”到这两个建议! PPS。好问题,顺便说一句,我希望我在一开始就足够聪明,能够问这样的问题,但那是很久以前的事了,现在我正努力帮助其他人完成我多年的Python编程!! |
![]() |
4
67
查看Peter Norvig关于在10年内成为一名大师级程序员的文章: http://norvig.com/21-days.html . 我敢打赌,任何语言都是如此。 |
![]() |
5
59
了解内省
做这些事会
|
|
6
48
|
![]() |
7
41
我会给你最简单和最有效的建议,我认为任何人都可以给你: 代码 . 你只能通过以下方式更好地使用一种语言(这意味着理解它) 编码 . 你必须积极地享受编码,受到启发,提出问题,并自己寻找答案。 有一个小时的空闲时间吗?编写将反转字符串的代码,并找出最佳解决方案。一个自由的夜晚?为什么不试着刮网呢?阅读其他人的代码。看看他们是怎么做的。问问自己你会怎么做。 当我对电脑感到厌烦时,我会打开我的IDE并对Storm进行编码。我记下了一些听起来有趣且富有挑战性的想法。网址缩短器?当然,我能做到。哦,我学会了如何将数字从一个基数转换为另一个基数作为副作用! 无论你的技能水平如何,这都是有效的。 你从不停止学习。 通过在业余时间积极地编写代码,你将不费额外的努力来理解语言,最终成为一名大师。您将积累知识和可重用代码,并记住习惯用法。 |
![]() |
8
24
如果你正在使用python进行科学研究(你似乎就是这样),那么其中的一部分就是学习和理解科学库,对我来说,这些就是
知道如何使用正确的库和向量化代码对于科学计算是至关重要的。 我想补充一点,以常见的方法(面向对象的方法、列表、迭代器)处理大型数字数据集可能非常低效。在科学计算中,可能需要以与大多数传统的Python编码器处理数据的方式截然不同的方式来构造代码。 |
![]() |
9
23
Google最近发布了一个在线的python类(“class”和“a course of study”)。 http://code.google.com/edu/languages/google-python-class/ 我知道这不能回答你的全部问题,但我认为这是一个很好的开始! |
![]() |
10
20
下载 Twisted 看看源代码。他们采用了一些相当先进的技术。 |
![]() |
11
12
彻底了解所有数据类型和结构 对于每一种类型和结构,编写一系列演示程序来练习类型或数据结构的各个方面。如果你这样做的话,每一个博客上的笔记都是值得的…它可能对很多人有用! |
![]() |
12
10
在一个夏天里,我独自一人在python网站上学习了python(不幸的是,我似乎再也找不到它了,所以我不能发布链接)。 后来,我在大学的一个一年级课程中就开始教巨蟒了。在接下来的夏天,我和 PythonChallenge 以及来自的问题 Google Code Jam . 解决这些问题有助于从算法的角度以及从学习Python可以做什么以及如何操作它以充分利用Python的角度。 出于同样的原因,我听说 code golf 也可以,但我从未为自己尝试过。 |
![]() |
13
10
学习算法/数学/文件IO/蟒蛇优化这不会让你成为大师,但要开始,试着通过 Project Euler problems 如果你有良好的高中数学知识并且知道如何使用谷歌,前50名左右的人不应该对你征税。当你解决一个问题时,你会进入论坛,在那里你可以浏览其他人的解决方案,这将教会你更多。但是要体面,不要把你的解决方案贴出来,因为这样做的目的是鼓励人们自己解决问题。 如果使用蛮力算法,那么强迫自己在Python中工作是不可原谅的。 这将教您如何在内存中布局大型数据集,并使用字典等快速语言功能高效地访问它们。 我自己做这件事学到了:
也是非常重要的
所有这些都应该与生物信息学有关。 诚然,我并没有从这次经历中了解到Python的OOP特性。 |
![]() |
14
7
你看过这本书吗? Bioinformatics Programming using Python “?看来你是它焦点小组的一员。 |
![]() |
15
6
你已经有很多阅读材料了,但是如果你能处理更多,我建议你 通过阅读python增强建议,特别是“完成”的PEP和“延迟、放弃、撤回和拒绝”的PEP,了解python的发展。 通过观察语言是如何变化的、做出的决定及其基本原理,您将了解Python的哲学,并了解“惯用的Python”是如何产生的。 |
![]() |
16
5
尝试 http://challenge.greplin.com/ 使用python |
![]() |
17
3
向其他开始学习python的人授课总是让你的想法清晰的好方法,有时,我会从学生那里得到许多整洁的问题,让我重新思考关于python的概念性问题。 |
![]() |
18
2
不完全是你想要的,但我认为这是个好建议。
学另一种语言,没什么关系。每种语言都有自己的想法和惯例,你可以从中学习。了解语言的差异,更重要的是
|
![]() |
19
2
我建议从一些迫使您探索语法表达能力的东西开始。Python允许多种不同的方式来编写相同的功能,但通常有一种最优雅、最快速的方法。如果你习惯了其他语言的习语,你可能永远不会找到或接受这些更好的方法。我花了一个周末艰难地度过了前20年左右。 Project Euler 在谷歌应用引擎上用django制作了一个简单的webapp。这可能只会让你从学徒变成新手,但是你可以继续制作一些更高级的webapps,解决更高级的ProjectEuler问题。几个月后,我回去解决了前20个体育问题从头开始在一个小时而不是一个周末。 |