01 2011 档案
摘要:一、Python中的线程使用:Python中使用线程有两种方式:函数或者用类来包装线程对象。1、函数式:调用thread模块中的start_new_thread()函数来产生新线程。如下例:view plaincopy to clipboardprint?importtimeimportthreaddeftimer(no,interval):cnt=0whilecnt10:print'Thread:(%d)Time:%s\n'%(no,time.ctime())time.sleep(interval)cnt+=1thread.exit_thread()deftest():#Usethread
阅读全文
摘要:python可以方便地支持多线程。可以快速创建线程、互斥锁、信号量等等元素,支持线程读写同步互斥。美中不足的是,python的运行在python 虚拟机上,创建的多线程可能是虚拟的线程,需要由python虚拟机来轮询调度,这大大降低了python多线程的可用性。我们经今天用了经典的生产者和消费者的问题来说明下python的多线程的运用 上代码:#encoding=utf-8importthreadingimportrandomimporttimefromQueueimportQueueclassProducer(threading.Thread):def__init__(self,thread
阅读全文
摘要:刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解。其实只要把函数参数定义搞清楚了,就不难理解了。先说说函数定义,我们都知道,下面的代码定义了一个函数funcAdef funcA(): pass显然,函数funcA没有参数(同时啥也不干:D)。下面这个函数funcB就有两个参数了,def funcB(a, b): print a print b调用的时候,我们需要使用函数名,加上圆括号扩起来的参数列表,比如 funcB(100, 99),执行结果是:10099很明显,参数的顺序和个数要和函数定义中一致,
阅读全文
摘要:python 函数返回值有两种形式: 1 返回一个值。 2 返回多个值。 现看看返回一个值的吧。deffirstvalue(a,b):c=a+breturncprintfirstvalue(1,2)结果:3再看看返回多个值的: 那怎么可以返回多个值呢,其他的语言一般调用函数的话,只能返回一个值,可能我不太熟悉所有的语言,我知道的语言只能返回一个值,而python可以返回多个值,感觉非常方便,发代码看下:defsecondvalue(a,b):c=a+breturn(a,b,c)x,y,z=secondvalue(1,2)print'x:',x,'y:',y,'z:',z可能上面的东西写的有点简
阅读全文
摘要:从这篇文章开始,我就开始分享几个python oop方面的一些特点,希望对大家理解python的oop有帮助,其实python的oop相对其他的语言来说是有些地方不同的。我今天就讲下其中的一方面私有机制的问题。其他的语言,比如JAVA,C++的oop语法都比较的规范,有公有,私有和保护的数据类型,而python的话,从我目前的观察来看,python的类是没有权限控制的,所有变量都是可以被外部调用的,那你会说:"python明明有私有的定义方法就是在变量或者方法的面前加上双下滑线__,但是我告诉你,这个实际上是python的伪私有。只是一种程序员约定俗称的规定,加了就表示私有变量,但是你如果要在
阅读全文
摘要:说起python重载,大家学过其他的语言比如说C#语言的话,应该知道有方法重载和运算符重载的概念,但是python重载的话,有它自己的特殊性,下面我说说自己的一点看法,希望大家踊跃拍砖。python 的重载主要包括方法重载和运算符重载。1.python 方法重载: 其他的语言一般对于方法重载的话,主要是根据参数的类型不同或者是数量不同来区分同名的方法。而python则比较特殊,它本身是动态语言,方法的参数是没有类型的,当调用传值的时候才确定参数的类型,故对参数类型不同的方法无需考虑重载。对参数数量不同的方法,则(大多数情况下)可以采用参数默认值来实现。比如你可以定义函数的默认值:def inf
阅读全文
摘要:最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者来说别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Javascript闭包的真实面目。 一、什么是闭包? “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 相信很少有人能直接看懂这句话,因为他描述的太学术。我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非常困难的。看下面这段代码: function
阅读全文
摘要:我知道的一种在python中Singleton mode的实现如下:class Foo: passdef instance(): global inst try: inst except: inst =Foo() return inst该实现的优点就是简单和直观,但缺点也同样明显:需要客户代码显式知道一个叫instance()的方法来创建该类的对象;在并发环境下这种实现并不可靠;第2点是相当严重的一个缺陷,如果你用了上面的代码,那只能祈祷不要有1个以上的实例出现(虽然几率较低,但还是有可能),否则就会出现稀奇古怪的问题。一个稍微好些实现如下:class Singleton(object): o
阅读全文
摘要:先给出一个四人团对Decorator mode的定义:动态地给一个对象添加一些额外的职责。再来说说这个模式的好处:认证,权限检查,记日志,检查参数,加锁,等等等等,这些功能和系统业务无关,但又是系统所必须的,说的更明白一点,就是面向方面的编程(AOP)。AOP把与业务无关的代码十分干净的从系统中切割出来,但是Decorator mode的强大远不止于此,本文的重点在于Decorator mode在Python中的应用,所以就不再过多描述Decorator mode本身了,要想深入了解该模式,请参考四人团的经典之作《设计模式》。在Python中Decorator mode可以按照像其它编程语言如
阅读全文
摘要:python中的Module是比较重要的概念。常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的.py文件所在的目录,然后import。这样的做法,对于少数文件是可行的,但如果程序数目很 多,层级很复杂,就很吃力了。有没有办法,像Java的Package一样,将多个.py文件组织起来,以便在外部统一调用,和在内部互相调用呢?答案是有的。主要是用到python的包的概念,python __init__.py在包里起一个比较重要的作用要弄明白这个问题,首先要知道,python在执行import语
阅读全文
摘要:一、压缩你的class类文件为jar包1.假设你的需要压缩的类文件存在的包为:cn.mbq.test1和cn.mbq.test22.进入你的classes目录(这里是在MyEclipse平台里建一个web项目,类编译后的文件是存放在classes文件夹里的),在DOS窗口中执行命令:jar cf mytest.jar cn.mbq.test1 cn.mbq.test2这一步其实可以使用MyEclipse来打成jar包,只选择需要的那些类就可以了。3.执行命令后你会在当前目录中找到mytest.jar文件,这个就是刚才生成的档案文件。你可以修改它的后缀为rar,然后使用winrar压缩程序打开它
阅读全文
摘要:os和os.path模块os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回但前目录('.')os.chdir(dirname):改变工作目录到dirnameos.path.isdir(name):判断name是不是一个目录,name不是目录就返回falseos.path.isfile(name):判断name是不是一个文件,不存在name也返回falseos.path.exists(name):判断是否存在文件或目录nameos.path.getsize(name):获得文件大小,如果name是目录返回0Lo
阅读全文
摘要:看了几个文档,还是这个最全面,最后附上自己的日记,早遇到这个文章就不需要整理笔记了1. log4j 的配置文件Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。1.1. log4j configuration scripts in properties formatlg4j.properties 文件作为作为常用的配置文件的方法如下:Ø 配置根 LoggerLogger 负责处理日志记录的大部分操作。其语法为:log4j.rootLogger = [ level ] , appenderName, appe
阅读全文