(一)、如何反序的迭代一個序列?
# 如果是一個list,最來的解決方案是tempList = [1,2,3,4]
tempList.reverse()
for x in tempList:print x
# 如果不是一個list,最通用的解決方案
print '\n- - - - - - - - - - - -'
tempTuple = (1,2,3,4)
for i in range(len(tempTuple)-1,-1,-1):print tempTuple[i]
(二)、 如何用Python來進行查詢和替換一個文本字符串?
# Python 中的 replace() 可以進行字符串替換
tempStr = "Hello java, Hello Python , Use JavaScript"
print tempStr.replace("Hello","Use")# Python 中的 sub() 可以用來查找并替換字符串, sub() 是使用正則來匹配
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._instanceclass TestClass(SingleTon):a = 1test1 = 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 = 1test1 = 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 = Nonedef __call__(cls, *args, **kwargs):if cls._instance is None:cls._instance = super(SingleTon,cls).__call__(*args, **kwargs)return cls._instanceclass TestClass(object):__metaclass__ = SingleTontest1 = 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._statereturn objclass TestClass(SingleTon):a = 1print 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()