分享

极简python教程07:生成式和装饰器

 程序员小谭 2022-03-02
测试基础系列  实战项目系列
技能提升系列  自动化测试系列
职场碎碎念系列
tips:
01 谭叔的问答间,请点击这里
02 加群、加组织,请点击这里
03 获取精选资料,请点击这里

大家好,我是谭叔。

讲解之前,我先说说我的教程和网上其他教程的区别:

1 我分享的是我在工作中高频使用的场景,是精华内容;

2 我分享的是学习方法,亦或说,是指明你该学哪些、该重点掌握哪些内容;

3 基于1和2,你可以按照我的教程学,也可以网上找视频学,也可以看书学……你得明白,掌握学习方法比找学习资料重要得多。

这一场,主讲python的生成式和装饰器。

目的:掌握四种生成式(列表、生成器、集合、字典),装饰器的原理和使用。

生成式

01 什么是生成式?

能够用一行代码,快速高效的生成数据。(这就不需要再通俗的讲解了吧)

02 列表生成式

举个例子:提取1-100之间的奇数

# 不用列表生成式odd_list = []for i in range(101):    if i%2==1:        odd_list.append(i)print(odd_list)
# 使用列表生成式(更加简洁)odd_list = [i for i in range(101) if i%2==1]print(odd_list)

03 列表生成式

使用(),而不是 []

# 注意:这个不是生成tuple,而是生成器odd_gen = (i for i in range(101) if i%2==1)
print(odd_gen)-> <generator object <genexpr> at 0x00000206EEBFF750>print(type(odd_gen))-> <class 'generator'>
for i in odd_gen: print(i)

04 集合生成式

举个例子:列表元素去重

src_list = [1,1,1,2,2,3,4,5,5,6]res_set = {i for i in src_list}print(res_set)-> {1, 2, 3, 4, 5, 6}

05 字典生成式

举个例子:字典kv反转

src_dict = {"zhangsan":20,"lisi":21, "wangwu":33, "zhaoliu":10}rev_dict = {v:k for k,v in src_dict.items()}print(src_dict)-> {'zhangsan': 20, 'lisi': 21, 'wangwu': 33, 'zhaoliu': 10}print(rev_dict)-> {20: 'zhangsan', 21: 'lisi', 33: 'wangwu', 10: 'zhaoliu'}

装饰器

01 什么是装饰器?

顾名思义:增强函数或类的功能的一个函数。

装饰器的作用:增强函数的功能,确切的说,可以装饰函数,也可以装饰类。

初学的你,还是太难

02 通俗的讲解

你开视频聊天,觉得自己的颜值不在线,于是乎,你使用美颜,增强装饰自己的颜值。

对于美颜这个功能来说,你可以用,我可以用,所有人都可以用,以此来增强装饰自己的颜值。

03 如何定义一个装饰器

def decorator(func):    def wrapper(*args,**kargs):         # 可以自定义传入的参数                print(func.__name__)        # 返回传入的方法名参数的调用        return func(*args,**kargs)     # 返回内层函数函数名    return wrapper

04 如何使用一个装饰器

方法一:不用语法糖@符号

# 装饰器不传入参数时f = decorator(函数名)# 装饰器传入参数时f = (decorator(参数))(函数名)

方法二:采用语法糖@符号

# 定义的装饰器@decorator def f():      pass
# 执行被装饰过的函数f()

再举个例子:计算函数时间

import time
# 定义装饰器def time_calc(func): def wrapper(args, kargs): start_time = time.time() f = func(args,kargs) exec_time = time.time() - start_time print(exec_time*1000) return f return wrapper
# 使用装饰器@time_calc def add(a, b): return a + b
@time_calcdef sub(a, b): return a - b
add_result = add(1987190, 123423123123)sub_result = sub(12341234, 123222)

一如既往,做个总结

01 生成式和装饰器,是python高级编程的重要知识点;

02 工作中,使用他俩的频率特别高。

封面图片来自unsplash.com

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多