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 @   指弹小能手  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2017-06-14 Oracle 11g OCM 考试大纲

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

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

点击右上角即可分享
微信分享提示