posts - 256, comments - 1319, trackbacks - 41, articles - 8
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

你今天Python了吗?(上)

Posted on 2004-09-28 12:05 FantasySoft 阅读(5821) 评论(10)  编辑 收藏 所属分类: All About SoftElegant Python

        你今天Python了吗?为了提高你的生产效率,赶快去关注一下小蟒蛇的成长吧!别再把Python当作你的业余爱好了,她能为你做手头上几乎所有的工作,而且能做得更好,也让你把写代码看成是一种真正的乐趣。为什么我们就一定只将注意力盯在C++、Java、C#这些所谓正统的语言上呢?我们的目标不是Be a pragmatic programmer吗?C++、Java乃至C#都可以看做是同一类型的语言:C++还算灵活,但纷繁复杂的语法使得生产效率低下,Java提高了生产效率,却损失了灵活性;C#算是在生产效率和灵活性平衡之间做得不错了,但是还是不够的,要不Boo语言之父就不用愤而著Boo了。
        Python首先是一种动态类型和强类型语言,动态类型意味着你不再需要为每一个变量的类型做无数次的声明,因为编译器会帮你做类型判断,它会跟根据变量的赋值来决定变量的类型。强类型则是意味着你不能将一个string当成一个int来用,除非你显式地转换它。
        Python本身是结构紧凑的,因为space在C++、Java、C#是会被忽略的,而且还有"{}"去界定code block,那么如果你喜欢,你就可以将所有代码写在一行上,写得多么让人晕头转向都行。但是这在Python中是不可能出现的,因为在Python中只有一种分隔符,就是冒号":",同时通过缩进来区分code block,或许你一开始会对这样的方式有点不习惯,但是到了后来,你会发现这样的方式会让你获益非浅,因为你养成了一种很好的代码风格。
        别以为Python是一种很学院派的语言,尽管很多人认为它十分适合作为学习编程的入门语言。事实上,Python不仅很适合初学者学习编程,而且还是一种功能强大的语言,你可以用它来做其他语言能够做的任何事情。而Python本身也几乎无处不在,Python编写的程序可以在各种主流的操作系统中运行,甚至于Palm。哦,差点忘了,Eric Raymond还告诉我们说黑客必须掌握四种语言,首推就是Python了。
        说到这里,似乎还是没有跟生产效率扯上什么关系哦。那好,就来点所见即所得的吧。下载Python,当然如果你一天都不可以离开.NET的话,就从IronPython开始学习Python吧。安装完成并运行Python或者IronPythonConsole,当你看到Python特有的Interactive方式的提示符>>>后,输入print "Hello,world"并且按下回车,Hello,world便出现在屏幕上了,至此你的第一个Python程序就编写并执行完毕了。与C++、Java乃至C#相比,用Python编写并执行这个经典程序是不是要快得多呢?呵呵~~~如果我现在就下定论说,Python的生产效率很高的话,你已经会骂我骗人了。好,稍安毋躁,咱们再来点有实际意义的代码吧。不过在此之前,你得先去下载两个十分有名的类库:wxPythonTwisted。下载并安装完了吗?好,我们开始Enjoy Python with you in ten minutes之旅吧(不喜欢Teach这个词,呵呵~~~)。
        首先是wxPython,如果大家都有看我前面的Post,就会知道wxPython的来头了。它是大名鼎鼎的wxWidget在Python的实现,不知道wxWidget是什么?不会吧,多看我的Blog不就知道了(偶真是臭美啊,其实我也才知道不久。别打我,呵呵~~~)?总之,使用wxPython就可以很轻松地进行GUI的开发了。随便找一个顺手的编辑器,键入如下代码,并存为一个你以喜欢的名字的文件,但是后缀得是.py:

from wxPython.wx import wxPySimpleApp, wxFrame
app 
=
 wxPySimpleApp()
frame 
= wxFrame(None, -1"Hello World"
)
frame.Show(
1
)
app.MainLoop()

然后在控制台下通过python *.py来运行这段代码。噢,一个窗口出现在屏幕上了。是不是有点成就感了呢?再来看看代码,就如WinForm一样简洁,但是别忘了,wxPython可是没有.NET平台的限制的哦。同时你从wxSimpleApp和wxFrame这样的类名是不是联想到了MFC的中Frame类、App类和Doc类呢?是的,wxPython也是通过相同的方式实现了MVC,使得整个GUI代码更加清晰,更加易于维护。如果你还不过瘾,嫌这个太简单,那就再来一个更加丰富的:

from wxPython.wx import *
ID_ABOUT
=101
ID_EXIT
=110
class MainWindow(wxFrame):
    def __init__(self,parent,id,title):
        wxFrame.__init__(self,parent,wxID_ANY, title, size 
= (400,200), style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)
        self.control 
= wxTextCtrl(self, 1, style=wxTE_MULTILINE)
        
        filemenu
= wxMenu()
        filemenu.Append(ID_ABOUT, 
"&About"," Information about this program")
        filemenu.AppendSeparator()
        filemenu.Append(ID_EXIT,
"E&xit"," Terminate the program")

        menuBar 
= wxMenuBar()
        menuBar.Append(filemenu,
"&File") # Adding the "filemenu" to the MenuBar
        self.SetMenuBar(menuBar)  # Adding the MenuBar to the Frame content.
        EVT_MENU(self, ID_ABOUT, self.OnAbout) 
        EVT_MENU(self, ID_EXIT, self.OnExit)  
        self.Show(
true)

    def OnAbout(self,e):
        d
= wxMessageDialog( self, " A sample editor  "
                            
" in wxPython","About Sample Editor", wxOK)
                          
        d.ShowModal() 
        d.Destroy() 

    def OnExit(self,e):
        self.Close(
true)  # Close the frame.

app 
= wxPySimpleApp()
frame 
= MainWindow(None, -1"Sample editor")
app.MainLoop()

以上的代码中的MainWindow类继承了wxFrame,并且为这个frame增加了一个wxTextCtrl控件,同时增加了一个菜单和对于菜单项的事件处理。它的简洁是不是让你心动了呢?赶紧到wxPython的网站去获得更多的信息吧。以上的代码均引自wxPython网站的Getting Started
        除了这种方式开发GUI之外,利用IronPython与CLR的协作能力,也可以通过调用WinForms的API,很轻松地进行GUI的开发,甚至是一种交互式的开发。详细的信息可以参考IronPython的老爸Jim的blog,上面有一篇很有趣的Post。

Feedback

#1楼    回复  引用  查看    

2004-09-28 14:19 by runmin      
Python的确是好咚咚啊。

#2楼 [楼主]   回复  引用  查看    

2004-09-28 14:30 by FantasySoft      
但是在国内的应用实在太少了,大家都在叫好,却不叫座。希望大家都能够拓宽自己的视野,将Python应用到日常开发当中,提高自己的开发效率。毕竟时间就是生命,效率就是金钱啊!

#3楼    回复  引用  查看    

2004-09-28 20:36 by kwklover      
@FantasySoft
是好东西,希望你能多发些技术系列文章了

#4楼    回复  引用  查看    

2004-09-28 20:38 by kwklover      
非常希望你能发表些python的主要应用于那些方面,有什么比较好的开发工具等,这些比较实用文章,也许大家更容易进入这个领域
毕竟,一种语言没有一个好的开发工具就意味不可能是高开发效率的语言

#5楼    回复  引用  查看    

2004-09-29 00:20 by FantasySoft      
kwklover,谢谢您的鼓励。偶也是在不断学习摸索之中,其实Python在很多方面都有应用啊,象网络应用,特别是Web应用,GUI开发,游戏开发等等。

同时我感谢您的建议,我会多多努力的,希望您能继续多多指教,多多批评。

#6楼    回复  引用  查看    

2004-09-29 15:07 by 吕震宇      
哈哈,Python的播种机!这颗种子俺收下了,谢谢!

#7楼    回复  引用  查看    

2004-09-30 05:49 by FantasySoft      
震宇兄,但愿这颗种子能在您的精心培育下,变成参天大树。 :)

#8楼    回复  引用    

2004-10-10 19:17 by billy250022 [未注册用户]
您好, 我也想用,但就是下载不了wxpython2.3.3
不知可不可以提供一个能下载wxpython2.3.3的地址。

#9楼    回复  引用  查看    

2004-10-11 10:44 by FantasySoft      
文章中不是提供了下载地址吗?我的版本也是从那个地址获得的.刚刚试了一下,确实有点问题,你尝试一下用代理去访问看看吧.

#10楼    回复  引用    

2005-05-13 09:27 by myhstone [未注册用户]
python听说运行得世巨慢。。。。

#11楼    回复  引用    

2005-06-28 01:26 by UP [未注册用户]
巨慢?

试过才知道。
不要随便听信无畏的牢骚。

#12楼    回复  引用    

2005-07-21 11:05 by pipi [未注册用户]
前辈阿,不知道能否提供一些twisted 网页编程的实例呢,如request,session的运用等,这些资料实在难找阿,而且关于request的经常是只有内部的调用。怎样去获得上一个页面的传递参数呢,请指教!

菜鸟mm上

#13楼    回复  引用    

2005-07-22 08:27 by limodou [未注册用户]
wxPython现在已经是2.6.X了,2.3.3太旧了。主页在:

http://wxpython.sourceforge.net/

#14楼 [楼主]   回复  引用  查看    

2005-07-22 10:08 by FantasySoft      
To limodou: 老大,是什么风把您都给吹来了啊! 欢迎,欢迎!

wxPython的更新进度还蛮快的嘛,版本号都已经升级到2.6.X了。不过时光飞逝,这篇Post发布都已经快一年了。

#15楼 [楼主]   回复  引用  查看    

2005-08-25 22:41 by FantasySoft      
To pipi:之前都没有留意你的Feedback。关于Twisted的编程,你可以参考Twisted主页提供的document,以及IBM网站上提供的一些教程。

#16楼    回复  引用    

2006-11-23 17:06 by Athlong@hotmail.com [未注册用户]
我也在用啊,好东西,开发速度超快啊。

#17楼    回复  引用  查看    

2008-07-22 17:40 by 安眠花      
Java提高了生产效率?

第一次听到这么说

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-04-02 02:09 编辑过
 
另存  打印