首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自C,我应该如何学习Python?

来自C,我应该如何学习Python?
EN

Stack Overflow用户
提问于 2010-08-18 20:49:49
回答 7查看 23.5K关注 0票数 19

我已经很好地掌握了C,我的第一个编程语言。我知道相当多的技巧和技巧,并且写了相当多的程序,主要是为了科学资料。现在我想扩展并理解OOP,Python似乎是一个很好的方向。

我见过几个关于如何学习Python的问题,但大多数问题来自于那些第一次开始编程的人。我不需要一个教程来告诉我字符串是什么,但我确实需要一个可以告诉我如何在Python中生成字符串的教程。有什么好消息可查的线索吗?如果源是免费的,则加分:)

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-08-18 21:34:59

在我认识Python之前我就知道C了。无意冒犯,但我不认为你的C知识有那么大的问题。除非你读得非常非常慢,否则就开始学习Python吧。浏览熟悉的材料不会花那么多时间,也不像针对C程序员的Python教程会让您成为更好的Python程序员--它可能会以不同的顺序教您一些事情,仅此而已,并提出一些您将用C做但不应该用Python做的特定的事情。

Python中的字符串实际上与C中的字符串有些不同,而且它们的用法也不同。我强烈建议“从头开始”学习它们,而不是考虑它们与C字符串的区别。首先,在Python 2中,最好不要使用Python的" string“类来表示字符串:有一个单独的unicode字符串类,对于实际的Python应用程序(几乎所有涉及用户数据的应用程序),您都需要这样做。(Python3修复了这个问题,使str类成为unicode字符串)。您需要为unicode/字节数据和解码/编码建立一个良好的工作实践。

在学习第二种编程语言时,一个常见的错误是认为“我知道如何编程,我只需要将我用C语言所做的事情翻译成Python”。不,你没有。虽然一个算法在不同的语言中基本上是相同的,但是在不同的语言中,做一件事情的自然方式可能是完全不同的。如果您学习使用Python,那么您将编写更好的Python代码,而不是尝试像C程序员那样编写Python。在Python中,您知道在C中有意义的许多“技巧”要么毫无意义,要么适得其反。相反,在一个典型的Python程序中,您应该愉快地完成许多事情,比如分配和释放大量内存,这些都是在C中您可能已经学会了三思而后行的东西。部分原因是典型的C程序与典型的Python程序有不同的限制,另一部分是因为您只需要编写更多的代码,并且比在Python中更难地考虑在C中正确处理这类事情。

如果您正在学习该语言,因为您迫切需要编写一个具有Python但没有C的系统/平台,那么编写类似于C程序的Python程序是一种合理的临时措施。但这可能不适用于你,即使这样做了,也不是最终的目标。

由于您的C经验,您可能感兴趣的一件事是Python/C。Python在很多方面都是很棒的,但它并没有导致科学应用程序最快的计算核心,C也不可能,但我们暂时不要进入FORTRAN ;-)。所以,如果你想继续用Python进行科学编程,而你的程序通常是以内存总线和CPU为界的,进行大量的数字运算(数十亿次操作),那么如果你需要的话,你可能想知道如何逃到C中。不过,把它当作最后的手段吧。

不过,在Python/C变得更有意义之前,您确实需要相当好地理解Python。

哦,是的,如果您想了解OOP,请记住,稍后再看一些类似于Java、Objective、C++或D的东西。Python不仅仅是一种面向对象语言,它是一种动态的面向对象语言。通过将C与Python进行比较,您可能不会意识到这一点,但是动态类型与静态类型是一个完全独立于Python的面向对象性的问题。Python对象就像哈希表,允许您随意地附加新字段,但是在许多其他面向对象语言中,对象以更像C struct的方式存储数据。

票数 31
EN

Stack Overflow用户

发布于 2010-08-18 20:55:54

我从官方文档中学到了所有关于Python的知识:http://docs.python.org/

而且是免费的。

票数 15
EN

Stack Overflow用户

发布于 2010-08-18 20:57:13

潜入巨蟒是一个很好的起点

启动解释器,IPython甚至比普通的Python解释器还要好。

使用dir()和help()在周围打探

别忘了至少读一遍官方文件

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3516560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档