北斗星君的专栏

NERVE软件开发组

黄庠魁ID:VisionCat
201791次访问,排名318好友0人,关注者12
安静的人
VisionCat的文章
原创 70 篇
翻译 0 篇
转载 4 篇
评论 709 篇
北斗星君的公告
神的话语
歌林多前书13章4-8节
爱是恒久忍耐,又有恩慈。爱是不嫉妒。爱是不自夸。不张狂。不作害羞的事。不求自己的益处。不轻易发怒。不计算人的恶。不喜欢不义。只喜欢真理。凡事包容。凡事相信。凡事盼望。凡事忍耐。爱是永不止息。
ICQ:
206-425-719
MSN:
Huangxiangkui@msn.com
OICQ:
170411742
最近评论
李建国:我安装的时候选择了繁体版的了,可是重新安装就再也没有选择机会了,请指教一下怎么才能恢复啊,谢谢!
temp77:您的 环境介绍 的文章,我已经全收下了,,, 非常感谢作者的辛勤劳动和共享精神! thanks ...
beenylee:关门

把加粗的效果去掉是这样写吗?

beenylee:我想反问楼主,哪里违反了能量守恒定律?
chenhao:用dev c++编译代码时出现如下错误:
error You must link against multi-threaded libraries when using ACE (check your project settings)
文章分类
收藏
    相册
    技术之友
    ShellEx
    链接交换
    在君夜阳的世界
    星之链接
    Chinese Tea
    STUDIO社群
    北斗星君专栏(新)(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 略谈Python语言(最强的脚本语言)收藏

    新一篇: 普通高中生眼中的中国软件行业(第二版) | 旧一篇: 浅谈 wxWindows FrameWork

      对于许多程序员来说,Python的大名应该有所耳闻。而对于Python的评论大多褒贬不一。有的甚至说Python是以其慢速运行而闻名于世。在此我并不是要去评论别人的对于错,我只是站在一个比较客观的角度来谈谈Python这一计算机语言。
      Python是一种解释性语言,而且属于OpenSource的项目。但是,你可以将其用于商业用途。并且可以将其放在商业的产品光盘中一同发售。当然,人们也可以从www.Python.org或者OpenSource的网站上免费获得其安装程序或者源代码。Python最初是在苹果计算机上被编译成功的,但现在他已经可以运行于世界上主流的操作平台之上了。他不只有Windows版本的。同时还有Linux,Unix等很多平台上都可以使用他,在RedHat9中,还将其作为开发必须的一项语言被安装。对于Python的代码类型,基本可分为3种,分别是字节代码,二进制代码,优化代码。他们的后缀名分别是.py .pyc .pyo 这些代码都可以直接运行。无需做任何的编译或者连接。而在使用这些类型的代码上,Python会更具不同的情况选择不同的类型。如下:

    #!/usr/bin/python
    #MyPython.py
    class python:
      def __init__(self):
        self.name='python'
      def yourname(self):
        print self.name

    #!/usr/bin/python
    #main.py
    import MyPython
    py=MyPython.python
    py.yourname()

    在运行时,Python会检测在main.py的当前目录中有没有MyPython.pyc文件,如果没有那么导入MyPython.py并且同时生成MyPython.pyc为下次更快的导入做好准备。这样,可以减少不少初始化的时间。而且,这一切无需用户介入,Python会自动完成。对于其语法,不的不承认,他的语法是众多其他语言中相对简单的,他排除了许多繁琐的思索。如下:

    #!/usr/bin/python
    a=2003
    print a
    a='Hello python'
    print a
    a=[2,0,0,3]
    print a[0]

    以上的代码可以被正常运行,其结果如下:

    2003
    Hello python
    2

    如果是C++至少需要声明3组变量。而对于Python一个变量就可以了。不但如此,Python的对代码块的管理也有他的独特之处。下面是Python与C++对于同样一个While循环的比较

    #!/usr/bin/python
    #python source
    a=0
    while (a<=10):
      a=a+1
      print 'The number is '+a
    print 'while is end'

    //Build by G++ or VC++
    //C++ Source
    #include
    int main()
    {
      while(a<=10)
      {
        a=a+1;
        cout<<"The number is "<  }
      cout<<"while is end";
      return 0;
    }

    对于以上代码的比较,可以看出,C++等语言是以{}来管理块的,而Python是以缩进来管理的。这样做的确有他的优越性。相信许多程序员都有过漏去{}的经历。如果,使用的编译器或者解释器优秀的话,你的确可以非常容易的加上漏去的{}。但是,如果不是这样,我想你会在复杂的代码中开始漫游了。因为,可能你的编译器会告诉你一个错误的错误信息,这个错误的位置可能会离你真正错误的地方很远(大概有十万八千里吧)。相对于此,以缩进管理方式的Python来说,程序员几乎不用考虑这种问题。其次以缩进方式区分块的Python在进行复杂的嵌套中,Python代码就显得明了许多了。如下面的Python与C++在嵌套上的比较:

    #!/usr/bin/python
    #python source
    class python:
      def Hello(self):
        print 'Hello'
      def count(n):
        in=0
        while(in<=n):
          in=in+1
          print in

    //buile by G++ or VC++
    //C++ Source
    #include
    int main()
    {
    class python
    {
    public:
    void Hello(void)
    {
    cout<<"Hello"<}
    void count(int n)
    {
    int in=0;
    while(in<=n)
    {
    in=in+1;
    cout<}
    }
    };
    return 0;
    }

    相比较来看,Python的代码更能分清其层次,而对于C++这样的代码虽然能够编译成功。但是,对于其日后的维护,会造成无尽的痛苦。同时,就在我刚才写C++Source的时候,也差点漏了};。由此,可以看出Python的语法简洁。同时,他的出错能力也非常强。在一般情况下,Python的解释器能够准确指出错误的位置和原因。如下面的代码:

    #!/usr/bin/python
    import A
    a=0
    print _a
    _a=b

    运行以上的代码Python将抛出如下的错误信息:
    Traceback (most recent call last):
      File "E:\source.py", line 1, in ?
        import A
    ImportError: No module named A

    Traceback (most recent call last):
      File "E:\source.py", line 3, in ?
        print _a
    NameError: name '_a' is not defined

    Traceback (most recent call last):
      File "E:\source.py", line 4, in ?
        _a=b
    NameError: name 'b' is not defined
    可以很容易的看出错误的原因和位置。在这种机制中当你调试复杂的程序时,你不用担心不能快速的解决问题。你只要按照Python的错误提示,一步步修正就可以了。
      对于Python的应用范围,我个人大概的将其分为三类。
      第一类时软件类,这我想不说大家也应该很清楚的。相对于C++等语言,Python的优势在于他的快速开发和代码开放。对于Python,你可以开一个记事本或者Kwriter来编写代码,然后保存,运行就可以了。即使再复杂的代码也是如此。这大大减少了开发周期,加快了开发速度。相对于传统的 编辑,编译,连接运行。Python可时少了不少的麻烦。三步并两一步。又由于Python的简洁的代码和短暂的培训时间,所以,对于软件的开发和维护都变得非常容易。而Python的代码解释性,对于用户而言,只要安装有Python以后,对于Python的软件就不必再安装Python了。对软件直接运行也可以,有一劳永逸的感觉。而对于开发者来说,产品的更新和修复更加容易。或许只要使用用户浏览一张网页的时间,就可以从根本上修复产品中的Bug。这要感谢Python的代码重用和灵活的代码管理。而对于再用户处发生的错误,开发者可以更具Python自带的错误诊断来得知情况。而且,在网上有很多有关Python的代码库,而且,这些都是免费的,对于开发的企业来说,可以节省一笔相当可观的开发资金。所以说,Python在软件市场也有其的特点和市场。
      第二类是网络类,随着现代网络的飞速发展。各种网络服务器脚本纷纷涌现。Perl,PHP,ASP等等都占一席之地。而Python自然也能应用于此。相对于PHP和ASP。Python能够实现从服务器软件到服务器脚本的所有功能。其中ZOPE服务器软件便是很好的例子。对于网络,Python有一组模块是专门针对它的。其中有Socket CGI和SocketServer等等,当然,Python也能够和一些大规模数据库很好的支持。甚至可以直接与他们连接无需通过其他的中间插件。应用Python强大的支持和Python简洁的代码。相信你可以在断时间内写出出色的动态网站。
      第三类是教育类。Python最初就是为了教育而开发的一种语言。应用于教育当然是情理之中的事情。在程序员中,如果你询问他们的入门语言是什么,我想许多都会说Basic更多的人说VB。其实,Basic并非最好的入门级语言。暂且不论Basic没有OOP的编程思想。在代码运行的时候还要编译和连接,虽然Basic和Python一样是解释性语言。而其语法实在让人无法忍受,比如在判断语句后要加then代替C++中的{}的确有些落伍了。对于学习编程更主要的是学习如何去用语言去思索。明白程序是如何运作的,更要知道,一些程序的基本编程思想。这一切是Python所能做到的。Python的编程思路和语法更像C++而且,支持类编程和代码重用。不论从何种角度来看,Python在让初学者了解编程是怎么一回事上是最好的语言。而Python另一个功能——即时运行。也为初学者学习编程增加不少的方便。如下在运行Python解释器后,如下运行:
    >>>print 'Hello Python'
    Hello Python
    这个对于初学者很重要,因为他们可以运用这种机制一行行输入代码,看看代码发生了什么作用。了解程序是如何运行的。这个对于深入编程是很重要的。而且,对于初学者的疑问,这种机制可以方便的解决其疑问。而对于初学者的独特想法,这种机制能够让初学者更快的得到这种想法的可行性。在资金上,如果对于普通的中小学高中等为了让学生学一些编程思想就花几千元卖一套VisualBasic实在是大材小用了。而且,VisualBasic必须运行于Windows这样,大家又要为每台计算机花一千多卖操作系统。这样一来教学机构可是要花费相当可观的一笔资金。而Python是免费的,许多资源都是免费的。而且Python也可以运行于免费的Linux系统上。所以,总体来说比使用VB的资金投入就更小了。
      当然,任何事物都有它的两面性。人们不是常说,科学是一把双刃剑么?不错Python也有他不足的地方。首先,是函数的定义,代码如下:

    def myfunction(number):
      return number+10

    这段代码只看函数的定义时不能知道myfunction返回是什么类型的数据,而number也不知道是什么数据类型。只有深入代码本身才可以了解这一切。再看看如下的代码:

    #!/usr/bin/python
    class myclass:
      def __init__(self):
        self.name='myclass'
      def nothing(self):

    print 'end'

    看来这个代码一切正常,nothing方法什么都不做。但在运行时Python会提示nothing有错误,并会波及到下面的代码。所以,不得不如此定义:

    #!/usr/bin/python
    class myclass:
      def __init__(self):
        self.name='myclass'
      def nothing(self):
        return

    print 'end'

    同时,我在最初所说的速度慢也是一个事实。不过,根据Python官方网站的报道。最新的Python2.3在速度上由于采用新的算法。所以,比以前的版本快30%左右。对于Python自带的GUI模块Tkinter,其中文支持相当不好。必须对其中显示和接收的中文转成unicode的才可以。不过,由于Python的众多库的支持。GUI也可以用wxPython写。他对中文的支持非常好,而且功能非常强大,几乎可以取代Python自带的Tkinter成为流行的GUI。最后是Python没有优秀的IDE环境,虽然这对于熟悉Python的人来说并不重要,但是对于吸引人们使用Python的确少些说服力。
      对于Python的未来,我觉得非常看好。首先,Python的代码运行机制非常类似于Java语言。同样可以拥有字节代码和二进制代码的运行方法。甚至比Java在代码的运行上更灵活。再来,Python的语法更为稳定,由于Python是一个解释器中的老前辈,所以,在多年的开发中成为一个相对稳定和完善的语言。Python的模块也不像Java那么复杂,编写也更为快捷。所以,Python未来将向Java这一方向发展。可能将会用于移动设备的开发。同时,网络的支持也自然会提高,虽然,Python的网络支持已经相当完善甚至超越了现在许多的网络脚本。但是,网络的日新月异Python必须更加更新才可以。比如XML技术,虽然现在的Python也支持,但是XML模块的运行速度还是比较慢。在程序的开发上,Python有其优势。不单是由于他的本地程序的支持非常好,对于网络的支持也超乎许多人的意料。在教学方向,Python以其简洁易懂的代码能够成为学习就算机语言的流行语言之一。
      以上只是我使用Python的一些看法。当然,只是我一个人的一面之见是会有错误的。所以,如果有任何不足的地方还请各位多多指点小生。我的看法:不论是思想还是程序,只有在不断的交流中才能完善。
      STUDIO软件开发组
      站长:北斗星君(黄庠魁)

    发表于 @ 2003年11月27日 00:22:00|评论(loading...)|编辑

    新一篇: 普通高中生眼中的中国软件行业(第二版) | 旧一篇: 浅谈 wxWindows FrameWork

    评论

    #vane 发表于2005-10-08 15:51:00  IP: 211.100.21.*
    星君我很想问.你还会些什么语言?
    我目前的打算是先学C++
    作为跳板(因为曾听说C语言是众多语言中的普通话,一通百通,学其他的就方便的多)
    然后学习PHP或者Python其中一类...(其实之前是铁定PHP,可惜看到更多资料和综合情况以后,仿佛派森更有来头)
    对于程序的设计我自知自己天赋不高 只希望在Web的开发上有所建树

    我想听听你的看法
    #北斗星君 发表于2005-10-09 00:17:00  IP: 211.100.21.*
    我其实也没什么好说的。

    程序设计,就好似瓶颈。一通百通。

    相对来说。Python作为初学的优秀语言的原因是因为,他使人们了解那些编程的机制。
    C语言,使人们理解编程。

    我学习编程的顺序和国内高校的不同。不过,这样学的确很冒险。因为,我的学习方式很独特。
    #vvoody 发表于2006-07-14 13:43:00  IP: 61.129.167.*
    呵呵,我想知道你学习编程的顺序和方法。谢谢
    #北斗星君 发表于2006-07-14 19:34:00  IP: 58.34.96.*
    呵呵,我学习编程的顺序和方法?
    我也不知道,因为学编程不是一天两天可以完成的。所以我也不记得了。

    曾经也有很多人问我怎么能学会编程,我的回答是,如果我能说清楚,我就到大学当教授了,不是么?

    其实,学习编程是一个循序渐进的过程。抱着最大的兴趣,然后相信自己能学好。最后努力用功,就可以了。

    希望我这样回答能让你满意。
    #fengjian_net 发表于2007-07-24 09:21:06  IP: 220.180.184.*
    “可以看出,C++等语言是以{}来管理块的,而Python是以缩进来管理的”

    如果是缩进管理,显然更容易出错。
    #北斗星君 发表于2007-07-24 16:20:47  IP: 58.34.86.*
    的确,有些时候会出现些小问题。

    但是如果使用缩进的话,可以让代码更清楚。层次更明了。

    要是说通过缩进来管理会更容易让我们写代码出错的话,那为什么现在众多的语言,都在使用缩进来避免代码的书写出错呢?

    这里我们可以通过Python可以养成一个良好的编程习惯。
    #DAVID 发表于2007-09-07 18:17:12  IP: 219.135.215.*
    PYTHON缩进是弄巧成拙的东西,非常不利于管理和交流。
    你看看把代码复制过来,大多数缩进都没有了。
    缩进是PYTHON最大的败笔。
    #北斗星君 发表于2007-09-10 20:01:10  IP: 58.34.253.*
    哦,那按照楼上的说法。
    汽车因为路况不好出车祸还要怪发明汽车的人发明了一个败笔机器咯?我觉David的观点不合逻辑。

    #License2Kill 发表于2008-03-06 11:35:22  IP: 222.66.62.*
    大家用C++现在都是{}+缩进,别在吹Python的缩进了,我不习惯。如果代码长,层次复杂,一定要缩进,可能缩出了屏幕。一般的宽屏都不行!!
    #License2Kill 发表于2008-03-06 11:37:28  IP: 222.66.62.*
    既然Python之父选择缩进,那我们就缩进吧。男人嘛!
    #realdreamer 发表于2008-03-06 16:39:08  IP: 61.148.45.*
    别吹了,我也是说. python,很多脚本语言都有差不多的功能,只不过python鬼使神差地应用比较广,就流行起来了.
    #lao1000 发表于2008-03-26 13:40:03  IP: 218.75.199.*
    最近正在学习PYTHON,用的是Ironpython.因为之前是用VC6的,所以还是比较习惯编译的方式,因为能够检查出很多错误出来。这点对于编写大型的程序还是很有必要的。
    性能也是一个问题,主要是数据规模大了,是否还能保持一致的稳定性。不同数量级的问题,讨论起来是不能等价的。这方面我对于Python完全没有概念。毕竟工业应用与学习编程的要求是有很大区别的。
    我最感兴趣的是我有一个可以操作本机和网络服务的工具,而又不用安装非常复杂的这个库,那个库。我可以很容易保持整个工作平台的连续。
    另外一个发现是,python 2.5具备一个set的集合概念,这个非常好。还有就是yeild关键字,这个感觉很好用。
    我现在正在用Ironpython做一个个人感兴趣的题目,主要用于系统描述,类似与AADL。
    对于Python很多方面都不是十分了解,希望多介绍有关的资源。
    #lao1000 发表于2008-03-26 13:42:22  IP: 218.75.199.*
    Ironpython虽然不如Python正宗,不过可以支持中文做变量名,因此我比较喜欢。
    #henrya2 发表于2008-04-27 12:52:16  IP: 59.53.136.*
    Python代码看起来比较像伪代码

    如果你学过其他编程语言,差不多学4、5天就可以基本入门。
    Peter Norving竟然推荐Python作为入门语言。
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 北斗星君