1. 用while 实现 for循环
li =[1,2,3,4] a = li.__iter__() while True: try: print(a.__next__()) except StopIteration as e: break
2. 带参数的装饰器
# fla=True # 装饰器 def flag(fla): def outer(func): def inner(*args,**kwargs): if fla: print('函数执行前') res = func(*args,**kwargs) print('函数执行后') return res res = func(*args, **kwargs) return res return inner return outer fla=False @flag(fla) def func2(): print('执行函数') func2()
3. 单例模式
1. 装饰器方式实现
# 装饰器实现单例模式 def singlenton(cls): _instance ={} def _singlenton(*args,**kwargs): if cls not in _instance: _instance[cls] =cls(*args,**kwargs) return _instance[cls] return _singlenton @singlenton class A(): def __init__(self,x): self.x=x pass a1=A(1) a2=A(2) print(id(a1),id(a2)) # 1584069849608 1584069849608
2. 基于 __new__实现单例模式
class Singlenton(object): _instance=None def __init__(self): pass def __new__(cls, *args, **kwargs): if not hasattr(Singlenton,'_instance'): Singlenton._instance=cls return Singlenton._instance s1 =Singlenton() s2 =Singlenton() print(id(s1),id(s2)) # 1867687056 1867687056
4 递归求 斐波拉契数列
# 1 1 2 3 5 8 def func(n): # n 表示斐波拉契数列第几位数 if n<=2: return 1 return func(n-1)+func(n-2) #斐波拉契 数列 n =8 for i in range(1,n+1): print(func(i))
5. 内置函数
# map() li=[4,6,3,1] def square(x): return x*x print(list(map(square,li))) # zip() # filter() def is_odd(n): return n%2==1 li2=[1,2,3,4,5,6] new_list=filter(is_odd,li2) print(list(new_list)) # sorted() dic=[{'name':'deng','age':12},{'name':'deng','age':16},{'name':'deng','age':2}] sort_dic=sorted(dic,key=lambda x:x['age']) print(sort_dic)