zoukankan      html  css  js  c++  java
  • 装饰器和单例模式、递归求斐波拉契数列

    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)
  • 相关阅读:
    go语言第一问:在其他地方执行编译go语言程序,结果会在哪个地方产生?
    ip地址获取无效,自己修改ip地址
    linux和windows双向互通的压缩包格式zip
    在notepad++中tab和空格的区别
    Django ----- app 和 ORM的操作和介绍
    Mysql --- 索引
    Mysql --创建用户和授权,备份
    Mysql --数据的增删改
    Mysql -- 外键的变种 三种关系
    Mysql -- 完整性约束
  • 原文地址:https://www.cnblogs.com/knighterrant/p/10859202.html
Copyright © 2011-2022 走看看