13-作业-装饰器、推导式

  1. 阅读自己 学号+1同学的22题作业,并写在作业下评论,可以是关于:

    • 学习到的知识点。
    • 作业可以优化的部分。
  2. 请为 func 函数编写一个装饰器,添加上装饰器后可以实现:执行func时,先输入"before",然后再执行func函数内部代码。

    def func():
        return 100 + 200
    
    val = func()
    
  3. 请为 func 函数编写一个装饰器,添加上装饰器后可以实现:执行func时,先执行func函数内部代码,再输出 "after"

    def func():
        return 100 + 200
    
    val = func()
    
  4. 请为以下所有函数编写一个装饰器,添加上装饰器后可以实现:执行func时,先执行func函数内部代码,再输出 "after"

    def func(a1):
        return a1 + "傻叉"
    
    def base(a1,a2):
        return a1 + a2 + '傻缺'
    
    
    def base(a1,a2,a3,a4):
        return a1 + a2 + a3 + a4 + '傻蛋'
    
  5. 请为以下所有函数编写一个装饰器,添加上装饰器后可以实现:将被装饰的函数执行5次,讲每次执行函数的结果按照顺序放到列表中,最终返回列表。

    import random 
    
    
    def func():
        return random.randint(1,4)
    
    reuslt = func() # 执行5次,并将每次执行的结果追加到列表最终返回给result
    print(result) 
    
  6. 请为以下函数编写一个装饰器,添加上装饰器后可以实现:执行 read_userinfo 函时,先检查文件路径是否存在,如果存在则执行后,如果不存在则 输入文件路径不存在,并且不再执行read_userinfo函数体中的内容,再讲 content 变量赋值给None。

    def read_userinfo(path):
        file_obj = open(path,mode='r',encoding='utf-8')
        data = file_obj.read()
        file_obj.close()
        return data
    
    content = read_userinfo('/usr/bin/xxx/xxx')
    
    """
    温馨提示:如何查看一个路径是否存在?
    import os
    result = os.path.exists('路径地址')
    
    # result为True,则表示路径存在。
    # result为False,则表示路径不存在。
    """
    
  7. 请为以下 user_lis t函数编写一个装饰器,校验用户是否已经登录,登录后可以访问,未登录则提示:请登录后再进行查看,然后再给用户提示:系统管理平台【1.查看用户列表】【2.登录】并选择序号。

    # 此变量用于标记,用户是否经登录。
    #    True,已登录。
    #    False,未登录(默认)
    CURRENT_USER_STATUS = False 
    
    
    def user_list():
        """查看用户列表"""
    	for i in range(1, 100):
            temp = "ID:%s 用户名:老男孩-%s"  %(i,i,)
            print(temp)
        
    def login():
        """登录"""
        print('欢迎登录')
        while True:
        	username = input('请输入用户名(输入N退出):')
            if username == 'N':
                print('退出登录')
                return 
            password = input('请输入密码:')
            if username == 'alex' and password == '123':
                global CURRENT_USER
                CURRENT_USER_STATUS = True
                print('登录成功')
                return 
            print('用户名或密码错误,请重新登录。')
    def run():
        func_list= [user_list,login]
        while True:
            print("""系统管理平台
            1.查看用户列表;
            2.登录""")
            index = int(input('请选择:'))
            if index >=0 and index < len(fun_list):
                func_list[index]()
            else:
                print('序号不存在,请重新选择。')
    
    run()
    
  8. 看代码写结果

    v = [lambda :x for x in range(10)]
    print(v)
    print(v[0])
    print(v[0]())
    
  9. 看代码写结果

    v = [i for i in range(10,0,-1) if i > 5]
    
  10. 看代码写结果

    data = [lambda x:x*i for i in range(10)] # 新浪微博面试题
    print(data)
    print(data[0](2))
    print(data[0](2) == data[8](2))
    
  11. 请用列表推导式实现,踢出列表中的字符串,然后再将每个数字加100,最终生成一个新的列表保存。

    data_list = [11,22,33,"alex",455,'eirc']
    new_data_list = [ ... ] # 请在[]中补充代码实现。
    
  12. 请使用字典推导式实现,将如果列表构造成指定格式字典.

    data_list = [
        (1,'alex',19),
        (2,'老男',84),
        (3,'老女',73)
    ]
    # 请使用推导式将data_list构造生如下格式:
    info_list = {
        1:('alex',19),
        2:('老男',84),
        3:'老女',73)
    }
    

明日预习

  1. 带参数的装饰器

    def m1(counter):
        def wrapper(func):
            def inner(*arg,**kwargs):
                return func(*arg,**kwargs)
            return inner 
        return wrapper
    
    @m1(5)
    def func():
        print(123)
        
    func()
    
  2. 模块 http://www.cnblogs.com/wupeiqi/articles/5501365.html

    • os
    • sys
    • time
    • datetime
posted @ 2019-06-14 16:47  指弹小能手  阅读(80)  评论(0编辑  收藏  举报

关于作者:专注数据库、Python 开发、ROS、深度学习,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(iamkuboy@163.com)咨询.