源码时代软件测试干货分享|Python自动化测试常见面试题,学会不怕找不到好工作!

怎么理解装饰器,用过或者写过什么装饰器吗?

概述:

装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。

详细描述:

import logging  

# 定义装饰器,接收旧函数  

def decorator(oldfunc):  

    # 定义新函数,加强原函数  

    def new_func(*args, **kwargs):  

        # ...加强代码写这里,记录日志信息....  

        logging.error("记录日志信息")  

        ret = oldfunc(*args, **kwargs)  

        return ret  

  

    # 返回新函数  

    return new_func  

  

  

# 通过语法糖使用装饰器  

@decorator  

def square(x):  

    # 获取 两个数的平方  

    return x**2  

  

# 执行  

print(square(5))  

 

 应用场景:

日志记录,统计代码执行时间,权限验证

迭代器和生成器的区别

概述:

生成器是特殊的迭代器,它更加优雅.生成器中的元素不是直接生成好,而是每使用next()方法获取下一个元素的时候才创建,从而大大节省内存空间。迭代器和生成器的区别

  1. 详细描述:                                                                                                                                                                             生成器(Generator)是创建迭代器的简单而强大的工具。它有列表生成器和函数生成器.函数生成器写起来就像是正规的函数,只是在返回数据的时候需要使用yield语句返回。每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)                                                                                                                                         迭代器是一个更加抽象的概念,任何对象,如果它的类有next方法和iter方法返回自身。对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调用iter()函数,iter()是Python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数。在没有后续元素时,next()会抛出一个StopIterration的异常。                                                                                                                         
  2. 应用场景: 

# 列表生成器,其实就是列表推导式的[]写成()  

g = (i for i in range(10))  

print(next(g))  

print(next(g))  

print(next(g))  

print(next(g))  

  

  

# 通过 函数式生成器 获取 1-10 数字的平方  

def sqrt():  

    num = 1  

    while num <= 10:  

        # 返回平方  

        yield num**2  

        num += 1  

  

        # 调用函数返回生成器  

        g = sqrt()  

        print(next(g))  

        print(next(g))  

        print(next(g))  

        print(next(g))  

(本文由源码时代技术老师原创撰写,转载请注明出处)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值