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

来自C,我应该如何学习Python?,python,c,Python,C,我很好地掌握了C语言,这是我的第一种编程语言。我知道相当多的技巧和技巧,并且已经编写了相当多的程序,主要是为了科学方面的东西。现在我想扩展并理解OOP,Python似乎是一个很好的方向 我已经看到了一些关于如何学习Python的问题,但大多数问题都来自于那些第一次开始编程的人。我不需要一个教程来告诉我什么是字符串,但是我需要一个教程来告诉我如何用Python生成字符串。有什么好的资料可以查吗?如果资料来源是免费的,则可获得额外积分:)我推荐这本书。它确实帮助我从java、C和C++中得到了pyt

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


我已经看到了一些关于如何学习Python的问题,但大多数问题都来自于那些第一次开始编程的人。我不需要一个教程来告诉我什么是字符串,但是我需要一个教程来告诉我如何用Python生成字符串。有什么好的资料可以查吗?如果资料来源是免费的,则可获得额外积分:)

我推荐这本书。它确实帮助我从java、C和C++中得到了python(现在是我最喜欢的语言)。

我从官方文档中了解了关于Python的所有知识:

而且是免费的。

是一个很好的起点

启动一个解释器,IPython甚至比普通的Python解释器更好

使用dir()和help()四处查看


别忘了至少通读一次,我在了解Python之前就知道C了。无意冒犯,但我认为你的C语言知识没什么大不了的。除非你读得非常慢,否则就开始学习Python吧。浏览您熟悉的材料不会花那么长时间,而且针对C程序员的Python教程也不会让您成为一名更好的Python程序员——它可能会以不同的顺序教您一些东西,仅此而已,并提出一些您在C中可以做但在Python中不应该做的具体事情

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

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

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

由于您的C经验,您可能会对Python/CAPI感兴趣。Python在很多方面都很好,但它并不能产生科学应用程序中最快的计算核心[C也可能如此,但我们暂时不要使用FORTRAN;-)]。因此,如果您打算通过使用Python继续进行科学编程,并且您的程序通常是内存总线和CPU绑定的,需要进行大量的数字运算(数十亿次运算),那么如果需要,您可能想知道如何跳转到C。不过,还是认为这是最后一招。 不过,在Python/capi变得更有意义之前,您确实需要很好地理解Python


哦,是的,如果你想了解OOP,记得以后再看看java、ObjuleC、C++、D.Python之类的东西,它不仅仅是一种面向对象语言,它是一种动态的OO语言。通过比较C和Python,您可能没有意识到这一点,但是动态类型和静态类型是一个完全独立于Python面向对象性的问题。Python对象类似于哈希表,允许您随意附加新字段,但许多其他OO语言中的对象存储数据的方式更像是C

struct

Diveintopython,官方文档,Mark Lutz的《学习Python》(第四版)是最好的书籍之一

如果您有编程背景,Python非常容易学习。最繁重的任务是学习图书馆和习语。python.org上的文档非常好而且免费。如果你在做数字运算,你几乎肯定会想熟悉这个扩展。

作为一个使用Java超过12年的人,我发现用一种新的语言解决问题是最好的学习方法。我不相信阅读——它浪费了大量的时间,你很容易阅读太久

我的建议是找到一个问题并开始用Python解决它。在这个过程中你会学到很多东西


祝你好运

字符串就是字符串就是字符串……python字符串可以包含nul char:)步骤1。学会搜索。步骤2:从这个问题开始:这个问题可能完全是重复的。我处理的两种语言是C(嵌入式微型计算机的基本功能)和Python。记住要丢失
但也将
()
放在
周围,如果
co