装饰器实例

1.用装饰器实现访问两个网页只用输入一次密码

复制代码
flag = False           #标志位
def login(func):
    def inner(*args, **kwargs):
        global flag
        if flag == False:
            username = input('用户名:')
            password = input('密码:')
            if username == "alex" and password == "123":
                print("登陆成功")
                flag = True
        if flag == True:    #如果不加入判断,就会有两次密码输入
            ret = func(*args,**kwargs)
            return ret
    return inner

@login
def art():
    print('欢迎来到文章页')
@login
def dar():
    print('欢迎来到日记野')
art()
dar()

结果:
用户名:alex
密码:123
登陆成功
欢迎来到文章页
欢迎来到日记野
复制代码

 

2.生成日志系统

复制代码
def wrapper(func):
    def inner(*args,**kwargs):
        ret = func(*args,**kwargs)
        the_Name = func.__name__
        f = open('log', 'a', encoding="utf-8")
        f.write("你访问了%s\n"% the_Name)
        f.close()
        return ret
    return inner

@wrapper
def f1():
    print("欢迎来到凤凰大视野")

@wrapper
def f2():
    print("欢迎来到东方卫视")

f1()
f2()

结果:
欢迎来到凤凰大视野
欢迎来到东方卫视

文件中的存入:
你访问了f1
你访问了f2
你访问了f1
你访问了f2
你访问了f1
你访问了f2
你访问了f1
复制代码

 3.实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中

复制代码
from urllib.request import urlopen

def wrapper(func):
    def inner(*args,**kwargs):
        with open('web','rb') as f:
            web_content = f.read()   #如何判断文件存在了?

        if not web_content:       #如果文件不存在,
            web_content = func(*args,**kwargs)
            with open('web','wb') as f:
                f.write(web_content)

        return web_content
    return inner

@wrapper
def get_url(url):
    content = urlopen(url).read()
    return content

web_content = get_url("http://www.cnblogs.com/Eva-J/articles/7194277.html")
print(web_content)
复制代码

 

posted @   明王不动心  阅读(203)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示