圣诞节的整理前两周的内容3

一、装饰器:

1.装饰器的基本实现:

2.

# def cal():
#     res=0
#     for i in range(5,10):
#         res+=i
#     return res
# print(cal())
# # 是从0加到4

#
# import time
# def cal():
#     start_time=time.time()
#     res=0
#     for i in range(10):
#         res+=i
#         stop_time=time.time()
#     print(‘这个函数的运行时间是%s‘%(stop_time-start_time))
#     return res
# print(cal())

# import time
# def timmer(func):
#     def wrapper(*args,**kwargs):
#         start_time=time.time()
#         res=func(*args,**kwargs)
#         stop_time=time.time()
#         print(‘函数运行的时间是%s‘%(stop_time-start_time))
#         return res
#     return wrapper
# @timmer
# def cal():
#     res=0
#     for i in range(10):
#         time.sleep(0.1)
#         res+=i
#     return res
# print(cal())

# 高阶函数复习
# def foo():
#     print(‘你好啊林师傅‘)
# def test(func):
#     print(func)
# test(foo())
# test(foo)

# def foo():
#     print(‘你好啊林师傅‘)
# def test(func):
#     print(func)
#     func()
# test(foo)

# def foo():
#     print(‘from the foo‘)
# def test(func):
#     return func
# print(test(foo))
#
# # pp=test(foo)
# # pp()
#
# foo=test(foo)
# foo()

# def father(name):
#     print(‘from father %s‘%name)
#     def son():
#         print(‘from the son‘)
#     print(locals())
# father(‘alex‘)

# def foo():
#     name=‘lijialun‘
#     def pp():
#         name=‘sjdk‘
#         print(locals())
#     return pp()
# foo()
# local()函数的作用:将局部变量显示出来,并且以字典的形式。

# 装饰器的基本实现:
import time
def timmer(func):
    def wrapper():
        start_time=time.time()
        func()
        stop_time=time.time()
        print(‘运行了%s‘%(stop_time-start_time))
    return wrapper
@timmer   #相当于   test=timmer(test)
def test():
    time.sleep(3)
    print(‘test函数运行完毕‘)
test()

# # 加上返回值
# import time
# def timmer(func):
#     def wrapper():
#         start_time=time.time()
#         res=func()
#         print(res)
#         stop_time=time.time()
#         print(‘运行了%s‘%(stop_time-start_time))
#         return 123
#     return wrapper
# @timmer    #等于test=timmer(test)
# def test():
#     time.sleep(3)
#     print(‘test函数运行完毕‘)
#     return ‘这是test的返回值!‘
# # res=test()
# # print(res)
# # # 这时,返回的是none!因为返回的不是test的return,而是timmer的return值,进而返回的是wrapper 的返回值。
# # 而wrapper没有返回值,因此是none
# res=test()
# print(res)

# # 加上参数
# import time
# def timmer(func):
#     def wrapper(*args,**kwargs):
#         start_time=time.time()
#         res=func(*args,**kwargs)
#
#         stop_time=time.time()
#         print(‘运行了%s‘%(stop_time-start_time))
#         return res
#     return wrapper
# @timmer    #等于"test=timmer(test)"
# def test(name,age):
#     time.sleep(1)
#     print(‘test函数运行完毕‘,name,age)
#     return ‘这是test的返回值!‘
#
# @timmer   #相当于“test1=timmer(test1)"
# def test1(name,age,gender):
#     time.sleep(1)
#     print(‘test函数运行完,名字是%s,年龄是%s,性别%s‘ %(name,age,gender))
#     return ‘这是test1的返回值!‘
# res=test(‘linhaifeng‘,18)
# print(res)
# pp=test1(‘wupeiqi‘,19,‘男‘)
# print(pp)
# #这样就存在了参数不固定的问题
# #所以不能再wrapper中书写固定的参数——引入*,**

# def test(*args,**kwargs):
#     print(args)
#     print(kwargs)
# test(1,2)
# #输出结果:
# # (1, 2)————元组形式
# # {}————字典形式
# test(1,2,3,name=18)
# #输出结果:
# #  (1, 2, 3)
# # {‘name‘: 18}
# test(1,2,3,name=18,age=1999)
# #输出结果:
# # (1, 2, 3)
# # {‘age‘: 1999, ‘name‘: 18}
# # test(mee=wdw,1,2,3,name=18)
# # SyntaxError: non-keyword arg after keyword arg

# # 分析args,kwargs:
# import time
# def timmer(func):
#     def wrapper(*args,**kwargs):
#         start_time=time.time()
#         res=func(*args,**kwargs)
#
#         stop_time=time.time()
#         print(‘运行了%s‘%(stop_time-start_time))
#         return res
#     return wrapper
# @timmer    #等于"test=timmer(test)"
# def test(name,age):
#     time.sleep(1)
#     print(‘test函数运行完毕‘,name,age)
#     return ‘这是test的返回值!‘
#
# @timmer   #相当于“test1=timmer(test1)"
# def test1(name,age,gender):
#     time.sleep(1)
#     print(‘test函数运行完,名字是%s,年龄是%s,性别%s‘ %(name,age,gender))
#     return ‘这是test1的返回值!‘
# res=test(‘linhaifeng‘,18)
# print(res)
# pp=test1(‘wupeiqi‘,19,‘男‘)
# print(pp)
# #这样就存在了参数不固定的问题
# #所以不能再wrapper中书写固定的参数——引入*,**

二、装饰器模拟session:

# user_dic={‘username‘:None,‘login‘:False}    #定义了一个全局变量
#
# def auth_func(func):
#     def wrapper(*args,**kwargs):
#         if user_dic[‘username‘] and user_dic[‘login‘]:   #字典的索引,即:None and False
#             res = func(*args, **kwargs)
#             return res
#         username=input(‘用户名:‘).strip()
#         passwd=input(‘密码:‘).strip()
#         if username==‘sb‘ and passwd==‘123‘:
#             user_dic[‘username‘]=username
#             user_dic[‘login‘]=True      #这两步相当于直接把全局变量给改了,接下来就不用每次都输入用户名和密码了
#             res=func(*args,**kwargs)
#             return res
#         else:
#             print(‘不对‘)
#     return wrapper
# @auth_func
# def index():
#     print(‘欢迎来到京东主页‘)
# @auth_func
# def home(name):
#     print(‘%s欢迎回家‘%(name))
# @auth_func
# def shopping_car(name):
#     print(‘%s的购物车里面有【%s】【%s】【%s】‘%(name,‘奶茶‘,‘玩具‘,‘小视频‘))
# index()
# home(‘产品经理‘)
# shopping_car(‘产品经理‘)

user_list=[
    {‘name‘:‘alex‘,‘passwd‘:‘123‘},
    {‘name‘:‘linhaifeng‘,‘passwd‘:‘123‘},
    {‘name‘:‘wupeiqi‘,‘passwd‘:‘123‘},
    {‘name‘:‘yuanhao‘,‘passwd‘:‘123‘}   #用户信息列表
]
current_dic={‘username‘:None,‘login‘:False}    #记录当前用户登录状态

def auth_func(func):
    def wrapper(*args,**kwargs):
        if current_dic[‘username‘] and current_dic[‘login‘]:   #字典的索引,即:None and False
            res = func(*args, **kwargs)
            return res
        username=input(‘用户名:‘).strip()
        passwd=input(‘密码:‘).strip()
        for user_dic in user_list:   #user_dic是新的变量!!
            if username==user_dic[‘name‘] and passwd==user_dic[‘passwd‘]:
                current_dic[‘username‘]=username
                current_dic[‘login‘]=True
                res = func(*args, **kwargs)
                return res
        else:   #注意else 的位置!
            print(‘用户名不正确,或者密码错误‘)

    return wrapper
@auth_func
def index():
    print(‘欢迎来到京东主页‘)
@auth_func
def home(name):
    print(‘%s欢迎回家‘%(name))
@auth_func
def shopping_car(name):
    print(‘%s的购物车里面有【%s】【%s】【%s】‘%(name,‘奶茶‘,‘玩具‘,‘小视频‘))
index()
home(‘产品经理‘)
shopping_car(‘产品经理‘)

三、生成器函数:

# p=(i for i in range(10))
# print(p)
# print(next(p))
# print(next(p))
# print(next(p))
# print(next(p))
# print(next(p))

# def test():
#     print(‘我要生孩子了‘)
#     print(‘我要生孩子了‘)
#     return ‘我‘
# res=test()
# print((res))

四、解压序列:

# a,b,c=[1,2,3]
# print(a)
# print(b)
# print(c)

# a,b,c=(1,2,3,4)
# print(a)
# print(b)
# print(c)
# #报错!

#
# a,b,c=‘hel‘
# print(a)
# print(b)
# print(c)

# # p=[10,3,2,4,6,2,23,53,2,2134]
# #需求:只取第一个和最后一个
# a,*_,c=[10,3,2,4,6,2,23,53,2,2134]
# print(a)
# print(c)

# a,*d,c=[10,3,2,4,6,2,23,53,2,2134]
# print(d)

五、加验证:

def auth_func(func):
    def wrapper(*args,**kwargs):
        username=input(‘用户名:‘).strip()
        passwd=input(‘密码:‘).strip()
        if username==‘sb‘ and passwd==‘123‘:
            res=func(*args,**kwargs)
            return res
        else:
            print(‘不对‘)
    return wrapper
@auth_func
def index():
    print(‘欢迎来到京东主页‘)
@auth_func
def home(name):
    print(‘%s欢迎回家‘%(name))
@auth_func
def shopping_car(name):
    print(‘%s的购物车里面有【%s】【%s】【%s】‘%(name,‘奶茶‘,‘玩具‘,‘小视频‘))
index()
home(‘产品经理‘)
shopping_car(‘产品经理‘)

六、生产者消费者模型:

#
# # 复习一下enumerate()函数:
# season=[‘spring‘,‘summer‘,‘fall‘,‘winter‘]
# print(enumerate(season))
# print(list(enumerate(season)))

#
# # 补充知识:触发生成器有三种方式:1,.__next__()     2.next()    3.send()
# def test():
#     print(‘开始啦‘)
#     yield 1
#     print(‘第一次‘)
#     yield 2
#     print(‘第三次‘)
#     yield 3
# t=test()
#
# # print(t.__next__())
#
# # print(next(t))
#
# # print(t.send(None))
#
# # 以上三个方法的结果是一样的!!!!!
#
# print(t.send(None))
# t.send(None)
# t.send(None)  #相当于None赋值给了yield  !!!

# def test():
#     print(‘开始啦‘)
#     yield
#     print(‘第一次‘)
#     yield 2
#     print(‘第三次‘)
#     yield 3
# t=test()
# print(t.__next__())
# t.send(None)

#
#
# def test():
#     print(‘开始啦‘)
#     first=yield
#     print(‘第一次‘,first)
#     yield 2
#     print(‘第三次‘)
#     yield 3
# t=test()
# print(t.__next__())
# # # print(t.__next__())
# # print(t.send(None))
# print(t.send(‘函数停留在first那个位置,我就是给first赋值的‘))

# 视频上的讲解:
# def producer():
#     ret=[]
#     for i in range(10000):
#         ret.append(‘包子%s‘%i)
#     return  ret
# def consumer(name):
#     print(‘我是[%s],我准备开始吃包子了‘%name)
#     while True:
#         baozi=yield
#         print(‘%s  很开心的把[%s]吃掉了‘ %(name,baozi))
# c1=consumer(‘wupeiqi‘)
# c1.__next__()
# c1.send(‘屎馅包子‘)

# 自己的思考:
# def consumer(name):
#     print(‘我是[%s],我准备开始吃包子了‘%name)
#
#     baozi=yield
#     print(‘%s  很开心的把[%s]吃掉了‘ %(name,baozi))
#     yield 2
# c1=consumer(‘wupeiqi‘)
#
# # c1.send(‘屎馅包子‘)
# print(c1.__next__())
# c1.send(‘屎馅包子‘)

# 终结版:
import time
def consumer(name):
    print(‘我是%s,我准备开始吃包子了‘%name)
    while True:
        baozi=yield
        time.sleep(1)
        print(‘%s很开心的把【%s】吃掉了‘%(name,baozi))
def producuer():
    c1=consumer(‘wupeiqi‘)
    c1.__next__()
    for i in range(10):
        time.sleep(1)
        c1.send(‘包子%s‘%i)
producuer()

七、函数闭包带参数装饰器:

user_list=[
    {‘name‘:‘alex‘,‘passwd‘:‘123‘},
    {‘name‘:‘linhaifeng‘,‘passwd‘:‘123‘},
    {‘name‘:‘wupeiqi‘,‘passwd‘:‘123‘},
    {‘name‘:‘yuanhao‘,‘passwd‘:‘123‘}   #用户信息列表
]
current_dic={‘username‘:None,‘login‘:False}    #记录当前用户登录状态
def auth(auth_type=‘filedb‘):
    def auth_func(func):   #这时不管auth_func有多少层,都能够接收auth_type这个参数。
        def wrapper(*args,**kwargs):
            if auth_type==‘filedb‘:     #增加if判断auth_type
                if current_dic[‘username‘] and current_dic[‘login‘]:   #字典的索引,即:None and False
                    res = func(*args, **kwargs)
                    return res
                username=input(‘用户名:‘).strip()
                passwd=input(‘密码:‘).strip()
                for user_dic in user_list:   #user_dic是新的变量!!
                    if username==user_dic[‘name‘] and passwd==user_dic[‘passwd‘]:
                        current_dic[‘username‘]=username
                        current_dic[‘login‘]=True
                        res = func(*args, **kwargs)
                        return res
                else:   #注意else 的位置!
                    print(‘用户名不正确,或者密码错误‘)
            elif auth_type==‘ldap‘:
                print(‘鬼知道怎么玩,只是为了多一个选择而已‘)
            else:
                print(‘鬼知道你用的是什么类型‘)
        return wrapper
    return auth_func         #返回auth_func相当于没有做任何改动,只是加了一层可选类型而已 。所以最终还是@auth_func
@auth(auth_type=‘filedb‘)
def index():
    print(‘欢迎来到京东主页‘)
@auth(auth_type=‘ldap‘)
def home(name):
    print(‘%s欢迎回家‘%(name))
@auth(auth_type=‘xxxxx‘)
def shopping_car(name):
    print(‘%s的购物车里面有【%s】【%s】【%s】‘%(name,‘奶茶‘,‘玩具‘,‘小视频‘))

index()
home(‘产品经理‘)
shopping_car(‘产品经理‘)

原文地址:https://www.cnblogs.com/lijialun/p/10174551.html

时间: 2024-08-01 07:53:13

圣诞节的整理前两周的内容3的相关文章

入职第三周——总结前两周学习内容

入职第二周,我系统性的学习了mui框架以及angularjs,并且自己简单的写了一个登录页面.在做这个登录界面的时候,我接触到了html5+,这是hbulider自己写的接口,针对android原生api,在用html5写的时候可以调用html5+的接口,这样就可以使用android原生api,比如相机.录音或者通讯录等等. 入职第三周,我想通过项目来完善自己的技术,因为只是看看文档太无聊了,要真正动手做在实践中学习和成长才是正确的编程方式.所以我打算开发一个app,经过指导老师的建议,我准备开

前两周工作总结

比赛前一天,用6个laser进行试验,其中上方三个雷达,专门用于扫描马路边缘信息.第二天,用的是底下三个雷达. 雷达配置介绍: 底下三个雷达,主要是为了智能车在按导航轨迹行走的过程中,不碰撞到马路边缘,其中左右两个雷达是为了检测马路边缘的,但 有一个不好的地方在于:这种配置离障碍物过近,会失效.有一段距离反而效果还行. 上方三个雷达,主要是用于马路边缘检测.理论上讲 用一个8线足矣,但为了马路边缘识别效果显著,故又增加两个4线雷达.相当于16线激光雷达,这样跳变点个数会增加,便于检测.使用的主要

定时清理两周前的分区上的数据

DECLARE @NEW_P INT DECLARE @P INT SELECT @NEW_P=DATEPART(DAYOFYEAR,CONVERT(DATETIME,GETDATE())) DECLARE BOUNDARY_ID_PARTSCHEME_DAY CURSOR FOR --控制top的值控制清除的时间 SELECT TOP 339 SORV.boundary_id FROM sys.partition_schemes SPS LEFT JOIN sys.partition_rang

这两周的学校生涯回顾

大四了,以后做作业的次数也越来越少了.最近很多课程都到尾声了,都要交作业了,忙碌了两个星期,今天算是把这些课程的作业做好了. 我的大四的课程如下: <传感网与物联网> <数据挖掘> <算法与数据结构高级课程> <虚拟化与云计算> 不得不承认这些课程的名字太大了,搞的好像确实挺牛的.其实老师只是把书本过一遍而已,浅尝辄止,不会很深入.因为没必要,很多人都没去上课,包括我在内,我只是上了5节以内的课.以前确实对课内的知识不是很重视,不是说它不好,学校这么多年的课

(第七周)内容汇总

项目名:食物链教学工具 组名:奋斗吧兄弟 组长:黄兴 组员:谢孝淼.李俞寰.杜桥 1.团队贡献分 黄兴 5.1  谢孝淼 4.8  李俞寰 5.2  杜桥 4.9 2.alpha视频发布 平台:优酷 链接:http://v.youku.com/v_show/id_XMTc3NDk4NjcyMA==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0 截图: 3.用户数 预期48小时用户数为30人,实际48小时用户数为28人.我们将项目文件上传到百度云盘中进行分享

最近找到了一个免费的python教程,两周学会了python开发【内附学习视频】

原文链接:https://blog.csdn.net/weixin_41052734/article/details/86528541 最近找到了一个免费的python教程,两周学会了python开发.推荐给大家,希望召集更多的朋友一起学习python. 最近开始整理python的资料,博主建立了一个qq群,希望给大家提供一个交流的同平台: 78486745 ,欢迎大家加入共同交流学习. 本套教程学习时间15天 第一阶段(1-8天) 该阶段我们正式进入Python这门语言的学习,首先通过了解Py

两周撸一个微信小程序

利益相关 无 说明 该小程序代码已开源,点击可查看源码,可随意 star.也可以先扫描下方的小程序码直接体验. 写在前面 前段时间写了一个简单的小程序 QuietWeather,源码在这里,具体实现相关可查看这篇文章:两天撸一个天气应用微信小程序.但是这个 小程序 和 QuietWeather 完全不是一个数量级的.so,该文章梳理内容会有那么一点儿多,想跳过的可以直接拉到最下面... 这里先上效果图,感兴趣的也可以 查看源码 .实际体验可扫描??上面的小程序码. 效果图 PC 开发者工具录制,

关于前几周项目进行的一些感受

如标题,真的不知道该写点儿什么好 项目在我看来是正在进行中的,但是同时要肩负前端设计和代码实现,只觉得还蛮累的,特别在同样负责前端的另外两个人不愿意积极学习讨论的情况下 因为组里的人都是第一次真正地进行项目实践,所以做设计的时候特意把网页设计得很简单,甚至简单到首页只要分三个块就可以实现,布局也很容易实现,但是任务分下去却总是到规定的时间还没有消息,即使做出来也是很敷衍的,效果非常差,需要不停地沟通改进,让人心里有些烦躁. 后端貌似正在建立数据库.但是即使分到做前端工作,对于后端还是想了解一下,

全栈的好处:七天和两周

郑昀 最后更新于2016/10/17 之前提到过『2007年年底,时任阿里巴巴和中国雅虎CTO的吴炯给我们提出针对股票舆情的情感趋势分析方向建议后,我们两周时间就完成了前后端的开发,迅速上线』,有的同学说哎呀是不是太快了点儿?光是收集语料,收集领域新词,训练和优化,都需要好久呢. 还有更快的呢. 08年12月13日,受到刘未鹏在 TopLanguage 组<一个整合的阅读共享方案>帖子的启发,我有了一个 memeTracker mashup 的思路.问了一下周围人的看法,大家竟然觉得这思路不靠