码迷,mamicode.com
首页 > 其他好文 > 详细

day13迭代器与生成器

时间:2017-11-04 19:24:08      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:文件   功能   close   imp   blog   none   style   访问   一个   

三个作业:

技术分享
# 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
login_dic = {alex:False}
def login(func):
    def inner(*args,**kwargs):
        if not login_dic[alex]:
            usrname = input(用户名 : )
            passwd = input(密  码 : )
            with open(userinfo) as f:
                for line in f:
                    line = line.strip()
                    usr,pwd = line.split( )
                    if usrname.strip() == usr and passwd.strip() == pwd:
                        print(登陆成功)
                        login_dic[usrname] = True
        if login_dic[alex]:
            ret = func(*args,**kwargs)
            return ret
    return inner

@login
def home():
    print(欢迎来到home页)

# home()
# home()
# home()
# 2.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件
def log(func):
    def inner(*args,**kwargs):
        with open(func.log,a+,encoding=utf-8) as f:
            f.write(%s被调用了\n%func.__name__)
        ret = func(*args,**kwargs)
        return ret
    return inner

@log
def func1():
    print(我是func1)

@log
def func2():
    print(我是func2)

func1()
func1()
func2()

#如果这个网页没有被爬取过,就真的去访问这个网页,否则,返回之前访问的时候存在文件中的内容
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(baaaaaaaaa+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/7213953.html)
print(web_content)
# web_content = get_url(‘http://www.cnblogs.com/Eva-J/articles/7213954.html‘)
# print(web_content)
# web_content = get_url(‘http://www.cnblogs.com/Eva-J/articles/7213953.html‘)
# print(web_content)
#迭代器和生成器



#r 可读    文本操作模式
#w 可写    文本操作模式
#rb 直接操作二进制
#wb 直接操作二进制
# 当你拿到的是纯文字,就用文本操作模式
# 当你拿到的是字节,就用二进制操作的模式

# {‘url‘:‘文件名1‘,‘url2‘:‘‘}   os

#装饰器:
    # 在不修改一个函数的调用方式的前提下载一个函数的前后添加功能
#装饰器的本质:闭包函数
装饰器三个作业

一、迭代器

day13迭代器与生成器

标签:文件   功能   close   imp   blog   none   style   访问   一个   

原文地址:http://www.cnblogs.com/zjchao/p/7784023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!