淘客熙熙

主题:【原创】Python简介 -- 请尽量

共:💬45 🌺35 新:
分页树展主题 · 全看 上页
      • 家园 对嵌入式系统开发了解不多。Python支持cross-platform compilation,

        也就是说,可以把Python的编译器/解释器编译成为在目标系统下运行。具体怎么做就要看是什么目标系统和具体项目要求了。我知道有人已经尝试过了。用google搜索“python cross-platform”大概能找到一些有用的信息吧。

        除了编译器/解释器外,Python还有一大堆的包(package)。如果对footprint要求较高,可以考虑把这些包去掉。虽然这些包都是包括在Python的每次发布里的,但并非每个包都是必须的。

        我有O'Reilly出版的一本“Learning Python”,内容全面、翔实(封面是一只老鼠)。不过我认为太罗嗦了,没有突出Python简单,容易上手的优点。python.org有一些tutorials。当然google也可以帮你找到更多的有关学习python的资料。

    • 家园 您的文章让我受益匪浅,不过我这还有几个问题!

      我刚开始学,可能问题都很基础,还请您别见笑,不吝赐教!

      1。bubble-sort,merge-sort,quick-sort是什么区别?

      2。linear rekursiv ,endrekursiv,baumrekursion,geschachtelte baumrekursion 的区别

      3。o schreibweise是什么意思,应该怎么用呢

      再次感谢

      • 家园 关于排序(sort),有很多种算法,你感兴趣的话,

        可以看看这个on-line的Demo,很生动的Java Applet,动画演示各种算法。这些算法的source code网上都有,你可以找来看看。

        外链出处

      • 家园 您这是德语吧?

        1:抱歉,我差不多都要把它们给忘光了,又不敢随便乱答。这些排序算法在计算机数据结构教材中应该都有提到。你也可以用Google查一下。

        2:是关于递归(recursion)的?同样地,这是计算机数据结构和算法的典型内容。

        3:这我可就完全摸不着头脑了。

        题外话。如果你是一个计算机初学者,并且在用Python学数据结构和算法,我建议你换成Java或C++。因为Python对于数据类型的要求过宽松,我个人认为不适合计算机教学,特别是数据结构和算法这样的课程。你有可能把很多时间浪费在排除一些编译器就可以发现的低级错误上,例如,类型不匹配,或者赋值到了错误的变量名(Python会悄悄地为你自动生成一个新的变量而不是报警出错,你的程序的结果可能会完全不对)。

    • 家园 更正及补充

      首先,原文中把包的定义放到了模块上。

      每一个Python源代码文件就是一个模块(module)。当一个或多个模块放在一个目录下,这个目录包含一个名为__init__.py的文件,并且这个目录起始于某个模块搜索路径(search path),那么这个目录就是一个包(package)。

      比如说,一个HR软件,有employee.py、timesheet.py、rate.py、commission.py等等。如果我们把这些文件放到目录/usr/lib/python/HR/payroll下,在这个目录下产生一个__init__.py文件,然后把/usr/lib/python/加入到Python的模块搜索路径表中,我们就有了一个名为“HR.payroll”的包。当要使用这个包中的代码,例如类Employee,我们可以引入employee模块:

      import HR.payroll.employee

      在这行代码之后,定义在employee模块中的类Employee及其非私有成员和方法就被引入了当前模块中。当然,如果还有其他类或free functions,也一并被引入了当前模块。

      其次,Python还有functional programming languages的某些特征。Python支持lambda,也就是在call site即时定义的无名函数,Perl称为closure。Python还有一些非常有趣和高效的处理sequence的内置函数。如:

      [vec1[i]*vec2[i] for i in range(len(vec1))]返回一个list,其中每个元素是vec1和vec2对应元素的乘积。再如:map( lambda (x): x*x, [1,2,3] )得到一个list,[1,4,9]。

    • 家园 深鞠一躬,献花三朵!

      再次感叹西西河水之深!

    • 家园 写的好。提纲挈领,条理清晰!

      加精,送花!

      Python的cross-platform实际表现如何,是真正的platform neutral吗?

      另外,和database 怎么talk呢?

      Python有没有什么比较著名的成功case,什么样的App用它比较合适呢?

      • 家园 多谢欣赏。

        我一直以来都是只在Linux下编程,只是最近才转到苹果的Mac,没有什么机会操心跨平台。Python在Linux/Unix以外的平台上似乎要稍微滞后一些。Windows因为不完全兼容POSIX,有些Python功能略有差异,特别是那些涉及到操作系统的部分,例如进程管理、文件系统访问等。但是那些诸如text processing,XML parsing、Internet protocols之类的功能还是非常platform neutral的。

        Python有一个“正式”的关系型数据库接口标准,类似于ODBC或JDBC(http://python.org/peps/pep-0249.html)。几乎所有的数据库都有符合这个标准的接口包,如Postgresql、MySQL、Oracle、DB2、SQLite等等。

        Python最著名的Killer Application应该是Zope(http://www.zope.org),一个非常成功的Content Management System。

        Python适用范围非常广。我个人认为,最能发挥其优点的领域应该是类似数值分析和计算的领域。用Python做glue和user interface,用C和C++库做heavy lift,应该可以达到rapid application development的效果。

        另外,好像有一些大型的游戏网站也是用Python做的。有一个Python的变种,叫Stackless Python(www.stackless.com),非常高效地实现了tasklet,据说比threading还要light weight,可以轻松地支持上万的concurrent users,非常玄妙。

        元宝推荐:Highway,
        • 家园 Active Python

          是Windows上面的最流行的Python distro,带有一个完整的win32api库。但如果是用惯了vbscript/wmi的人,好像没啥特别好的理由转到Python上面去。

          我个人觉得Python是个很好的glue language,可以把很多不同语言生成的程序粘接到一起形成新的应用,同时也是需要跨平台工作的系统管理员的好工具(但不是也不能是唯一的工具)。

        • 家园 非常同意!

          总的来讲,Python的跨平台做得不错,我暂时没有发现大的问题。Python调用数据库非常简单,有很多包可以选择。

          Python的最大特点是开发效率,很多人宣称是JAVA的10倍,不过我的感觉要快2-3倍时没有问题的,几行代码就可以建立一套web service。

        • 家园 zope?

          这个也太慢了。

分页树展主题 · 全看 上页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河