【问题标题】:Coming from C, how should I learn Python? [closed]来自C,我应该如何学习Python? [关闭]
【发布时间】:2010-08-18 20:49:49
【问题描述】:

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

我看到了几个关于如何学习 Python 的问题,但其中大部分来自那些希望第一次开始编程的人。我不需要一个可以告诉我字符串是什么的教程,但我确实需要一个可以告诉我如何在 Python 中创建字符串的教程。对一些好的资源有什么帮助吗?如果源是免费的,则奖励积分:)

【问题讨论】:

  • a string is a string is a string...python 字符串可以包含 nul char :)
  • 第 1 步。学习搜索。第 2 步:从这个开始:stackoverflow.com/questions/1590689/… 这个问题可能完全是重复的。
  • C(嵌入式微型计算机的真正基础知识)和 Python 是我处理的两种语言。记住要丢失;,但在返回C 时也要在if 周围加上() 条件:P
  • @Nict T 你知道,Python 不需要 ;'s,但可以像 C 一样使用/滥用。人们只是不喜欢 ;'s 的外观Python中的行。括号也差不多。

标签: python c


【解决方案1】:

我在了解 Python 之前就了解了 C。无意冒犯,但我认为你的 C 知识没什么大不了的。除非你阅读非常非常缓慢,否则就开始学习 Python。浏览您熟悉的材料不会花很长时间,而且似乎针对 C 程序员的 Python 教程不会让您成为更好的 Python 程序员——它可能会以不同的顺序教给您东西,仅此而已,并提出一些你会在 C 中做但在 Python 中不应该做的特定事情。

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

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

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

由于您的 C 经验,您可能会感兴趣的一件事是 Python/C API。 Python 在很多事情上都很棒,但它并不能产生最快的科学应用程序计算核心[C 可能也是如此,但我们现在不要进入 FORTRAN ;-)]。因此,如果您的目标是通过使用 Python 继续进行科学编程,并且您的程序通常受内存总线和 CPU 限制,需要进行大量的数字运算(数十亿次操作),那么您可能想知道如何如果需要,可以逃到 C 中。不过,请考虑将其作为最后的手段。

不过,在 Python/C API 变得更有意义之前,您确实需要充分了解 Python。

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

【讨论】:

  • 感谢您直截了当。很有帮助。
  • 在 Python 3.x 中最好使用str 类型的字符串。
  • +1 来自纯粹或几乎纯粹的命令式语言,我花了很多时间来理解 Python 的功能方面。直到大约 3 个月开始定期编写 Python 代码,我基本上是在使用 Python 语法编写一个奇怪的 C 和 Java 风格的混合程序。
  • @Chinmay:如果它没有完整的迭代器理解,那就不是 Python ;-)
【解决方案2】:

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

而且它是免费的。

【讨论】:

【解决方案3】:

dive into python 是一个很好的起点

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

使用 dir() 和 help() 来探索

别忘了阅读official docs 至少一次

【讨论】:

  • 我来自 PHP,发现潜入 python 是一个很好的资源。非常容易理解和理解。
  • +1 用于提及“深入 Python”。
【解决方案4】:

我会推荐这本书How to Think Like a Computer Scientist in Python。它确实帮助我开始使用来自 Java、C 和 C++ 的 Python(现在是我最喜欢的语言)。

【讨论】:

    【解决方案5】:

    Diveintopython,官方文档,Mark Lutz 的“Learning python”(第 4 版)是最好的书籍之一。

    【讨论】:

      【解决方案6】:

      如果您有编程背景,Python 很容易上手。最繁重的任务是学习库和习语。 python.org 上的文档非常好而且免费。如果您正在处理数字,您几乎肯定会想熟悉numpy 扩展。

      【讨论】:

        【解决方案7】:

        作为一个使用 Java 超过 12 年的人,我发现发现一个问题并用一种新语言解决它是最好的学习方式。我不相信阅读——它会浪费大量时间,而且很容易导致阅读时间过长。

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

        祝你好运

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-06
          相关资源
          最近更新 更多