zoukankan      html  css  js  c++  java
  • 装饰器进阶

    # 缓存页面示例
    import os
    from urllib.request import urlopen
    # 先查看文件里是否有这个网页的内容,内部函数调用调用外部函数的变量,此时变量存在一个文件中,
    # 如果没有,就把它写入文件,等第二次进行访问的时候,先进行文件判断,如果存在就直接读,
    def cache(func):
    def inner(*args,**kwargs):
    if os.path.getsize('web_cache'):
    with open('web_cache','rb') as f:
    return f.read()
    ret = func(*args,**kwargs)
    with open('web_cache','wb') as f :
    f.write(b'***'+ret)
    return ret
    return inner



    @cache
    def get(url):
    code = urlopen(url).read()
    return code

    ret = get("https://home.cnblogs.com/u/wupeiqi/")
    print(ret)
    ret = get("https://home.cnblogs.com/u/wupeiqi/")
    print(ret)
    ret = get("https://home.cnblogs.com/u/wupeiqi/")
    print(ret)


    把每次添加删除的记录全部存在文件中
    # def wrapper(func):
    # def inner(*args,**kwargs):
    #
    # ret = func(*args,**kwargs)
    # with open('log1','a',encoding='utf-8') as f:
    # f.write(func.__name__+' ')
    # return ret
    #
    # return inner
    #
    #
    #
    # @wrapper
    # def shoplist_add():
    # print('增加一个函数')
    #
    #
    # @wrapper
    # def shoplist_del():
    # print('删除一个')
    #
    # shoplist_add()
    # shoplist_del()


    登陆示例,第一次成功后,后续无需每部操作都再次登陆
    FLAG = False
    def wrapper(func):
    def inner(*args,**kwargs):
    global FLAG
    if FLAG:
    ret = func(*args, **kwargs)
    return ret
    else:
    username = input('username:')
    password = input('passward:')
    if username =='boss_gold' and password == '22222':
    FLAG = True

    ret = func(*args,**kwargs)
    return ret
    else:
    print('登录失败')
    return inner

    @wrapper
    def shoplist_add():
    print('增加一个函数')


    @wrapper
    def shoplist_del():
    print('删除一个')
    # #
    shoplist_add()
    shoplist_del()
  • 相关阅读:
    react 采坑记录
    理解JS 模块化
    MongoDB使用教程
    scss
    gulp 使用教程
    node.js 简单入门
    jQuery
    jQuery
    php+mysql+bootstrap 实现成绩管理系统
    SVN的commit功能用bat实现
  • 原文地址:https://www.cnblogs.com/zhange000/p/9283533.html
Copyright © 2011-2022 走看看