前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python练习题-day11

python练习题-day11

作者头像
10JQKA
发布2019-10-23 15:00:09
4310
发布2019-10-23 15:00:09

1、编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),

代码语言:javascript
复制
要求:登录成功一次,后续的函数都无需再输入用户名和密码
代码语言:javascript
复制
flag=False
def wrapper(fun):
    def inner(*args,**kwargs):
        global flag
        if flag==True:
            res=fun(*args,**kwargs)
            return res
        if flag==False:
            count=0
            while count<3:
                uname=input("请输入用户名:")
                pwd=input("请输入密码:")
                f1=open("info_database",encoding="utf-8") #打开存储类型为字典的一个文件
                data=f1.read()
                if eval(data).get(uname)==pwd:
                    res=fun(*args,**kwargs)
                    flag=True
                    return res

                else:
                    print("用户名或密码错误,请重新输入(你还有%s次机会)"%(2-count))
                    count+=1
    return inner
@wrapper
def goods_add():
    print("购买商品")
@wrapper
def good_del():
    print("删除商品")
代码语言:javascript
复制
2.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件
代码语言:javascript
复制
def wrapper(fun):
    def inner(*args,**kwargs):
        with open("log.txt","a",encoding="utf-8") as f1:
            f1.write(fun.__name__+"\n")

        res=fun(*args,**kwargs)
        return res
    return inner
@wrapper
def good_add():
    print("购买商品")

good_add()
good_add()

3、进阶作业(选做):

1.编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果 2.为题目1编写装饰器,实现缓存网页内容的功能: # 具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中

代码语言:javascript
复制
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)  #get()
        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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-02-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档