你今天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。

时间: 2024-10-17 16:41:41

你今天Python了吗?(上)的相关文章

Python Selenium 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows

Python Selenium 文件上传(一)

昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直接定位到元素,然后再sendKeys("value")即可 <input id="file_name" class="text-1 w255" type="text" readonly="" value=

让python在hadoop上跑起来

duang~好久没有更新博客啦,原因很简单,实习啦-好吧,我过来这边上班表示觉得自己简直弱爆了.第一周,配置环境:第二周,将数据可视化,包括学习了excel2013的一些高大上的技能,例如数据透视表和mappower绘制3d地图,当然本来打算是在tkinter里面运用matplotlib制作一个交互式的图表界面,然而,画出来的图简直不是excel2013能比的,由于对界面和matplotlib研究的也不是很深,短时间是没法研究出来,上周真是多灾多难:现在,第三周,开始接触hadoop,虽说大多数

Python WebDriver 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Window

【物联网(IoT)开发】使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关

上篇"[物联网(IoT)开发]Arduino 入门 Hello World(LED闪烁)"只是通过将一段程序烧录到Arduino开发板上控制LEC闪烁,没有任何连网动作,也就是说断开网络提供电源依然还可以工作.本文将介绍如何开发一个应用程序,以便使用适用于物联网 (Internet of Things, IoT) 的技术.我们的应用程序通过串口收集数据,将其存储在一个 Web 服务器上,然后在网页上实时显式结果,并可以在网页上控制LED的开关. 构建一个类似的应用程序的前提条件 对于第

python中FTP上传和下载

写这篇文章方便以后遇到需要定期去上传或下载时直接可以此简单模板. 1.python中FTP上传 #/usr/bin/python  # -*- coding: utf-8 -*-  import datetime import time import sys import os import ftplib def Upload_File():     ftp = ftplib.FTP()     TODAY=time.strftime('%Y-%m-%d')     FTPIP= "10.10.

Python WebDriver 文件上传

昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直接定位到元素,然后再sendKeys("value")即可 <input id="file_name" class="text-1 w255" type="text" readonly="" value=

Python 第三方包上传至 PyPI 服务器

PyPI 服务器主要功能是?PyPI 服务器怎么搭建? PyPI 服务器可以用来管理自己开发的 Python 第三包. Pypi服务器搭建 Python 第三方包在本地打包 # 本地目录执行以下命令应该能成功在dist目录下生成*.tar.gz的包文件. python setup.py sdist Python 第三方包上传至 PyPI服务器 代码打包服务器上家目录添加配置文件 vim ~/.pypirc 添加如下内容: [distutils] index-servers = test test

用Python在地图上模拟疫情扩散

最近在研究热力图,发现了一篇可能有用的Python模拟疫情扩散的文章,可以部分模拟热力图,整篇文章原文内容如下: 瘟疫蔓延,连芬兰都难以幸免 受杰森的<Almost Looks Like Work>启发,我来展示一些病毒传播模型.需要注意的是这个模型并不反映现实情况,因此不要误以为是西非可怕的传染病.相反,它更应该被看做是某种虚构的僵尸爆发现象.那么,让我们进入主题. 这就是SIR模型,其中字母S.I和R反映的是在僵尸疫情中,个体可能处于的不同状态. S 代表易感群体,即健康个体中潜在的可能转

appium+python在Mac上环境搭建

前言 mac上搭建appium+python的环境还是有点复杂的,需要准备的软件 1.nodejs 2.npm 3.cnpm 4.appium 5.pip 6.Appium-Python-Client 一.nodejs安装 1.nodejs下载地址:https://nodejs.org/ 2.下载完成后傻瓜式下一步安装 3.打开终端,查看版本号是否安装成功,输入:node -v 二.npm安装 1.打开终端,输入:sudo bash 2.继续输入:sudo curl -L https://npm