(一)、如何反序的迭代一个序列?
tempList = [1 ,2 ,3 ,4 ]
tempList.reverse()
for x in tempList:
print x
print '\n- - - - - - - - - - - -'
tempTuple = (1 ,2 ,3 ,4 )
for i in range(len(tempTuple)-1 ,-1 ,-1 ):
print tempTuple[i]
(二)、 如何用Python来进行查询和替换一个文本字符串?
tempStr = "Hello java, Hello Python , Use JavaScript"
print tempStr.replace("Hello" ,"Use" )
import re
rex = r'(Hello|Use)'
print re.sub(rex, 'Bye' , tempStr)
(三)、使用Python实现单例模式。
所谓单例就是一个类从始至终只能产生一个实例。 方法一:使用new 方法
在new 方法中把类实例绑定到类变量_instance上,如果cls._instance为None表示该类还没有实例化过,实例化该类并返回。如果cls_instance不为None表示该类已实例化,直接返回cls_instance 方法二:使用装饰器(decorator) 方法三:使用metaclass (元类) 方法四:共享属性
所谓单例就是所有的引用(实例,对象)拥有相同的属性和方法,同一个类的实例天生都会有相同的方法,那我们只需要保证同一个类所产生的实例都具有相同的属性。所有实例共享属性最简单直接的方法就是共享dict 属性指向。 方法五:Python模板
方法一 使用new 方法
class SingleTon (object) :
def __new__ (cls, *args, **kwargs) :
if not hasattr(cls,'_instance' ):
cls._instance = object.__new__(cls,*args,**kwargs)
return cls._instance
class TestClass (SingleTon) :
a = 1
test1 = TestClass()
test2 = TestClass()
print test1.a, test2.a
print id(test1),id(test2)
方法二:使用装饰器(decorator)
def SingleTon (cls, *args, **kwargs) :
instances = {}
def _singleton () :
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return _singleton
@SingleTon
class TestClass (object) :
a = 1
test1 = TestClass()
test2 = TestClass()
print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)
class SingleTon (type) :
def __init__ (cls,name,bases,dict) :
super(SingleTon,cls).__init__(name,bases,dict)
cls._instance = None
def __call__ (cls, *args, **kwargs) :
if cls._instance is None :
cls._instance = super(SingleTon,cls).__call__(*args, **kwargs)
return cls._instance
class TestClass (object) :
__metaclass__ = SingleTon
test1 = TestClass()
test2 = TestClass()
test1.a = 1
print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)
方法四:共享属性
class SingleTon (object) :
_state = {}
def __new__ (cls, *args, **kwargs) :
obj = object.__new__(cls, *args, **kwargs)
obj.__dict__ = cls._state
return obj
class TestClass (SingleTon) :
a = 1
print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)
方法五:Python模板
class My_SingleTon (object) :
def foo (self) :
pass
my_sign = My_SingleTon()
my_sign.foo()