Python高级用法综合举例

简介: [本文出自天外归云的博客园] 举例 下面代码围绕一个Student类综合举例说明装饰器、生成器、动态获取/添加类成员、列表推导式、reduce函数、lambda表达式的实际应用: from functools import reduce def show(func): de...

[本文出自天外归云的博客园]

举例

下面代码围绕一个Student类综合举例说明装饰器、生成器、动态获取/添加类成员、列表推导式、reduce函数、lambda表达式的实际应用:

from functools import reduce

def show(func):
    def wrapper(_object):
        print([i for i in func(_object)])
    return wrapper

@show
def generator(_object):
    for attr in _object.__dict__:
        yield(attr,_object.__dict__[attr])

class Student(object):
    def __init__(self, **kwargs):
        for key,value in kwargs.items():
            if not hasattr(self,key):
                setattr(self,key,value)

    def show_info(func):
        def wrapper(self):
            print(func(self))
        return wrapper

    @show_info
    def info(self):
        info = [str(k)+":"+str(v) for k, v in self.__dict__.items()]
        return reduce((lambda x,y:x+" "+y), info)

if __name__ == '__main__':
    s = Student(score=1,name="asdfa",school="anda")
    generator(s)
    s.score=11
    s.info()

这个Student类的功效是:可以动态的添加任意数量的成员变量,并且提供信息打印的方法。

运行结果:

 

高级用法简介

1. 装饰器:通过函数嵌套的方式,以被装饰函数作为装饰器函数入参,用函数修饰函数的一种方法。上面代码中的show和show_info函数都是装饰器;

2. 生成器:通过for循环调用yield函数生产出一个可迭代的结果集,可以将生成器看成一个生产者。上面的代码中generator就是一个生产者,他的修饰器函数show中对他的生产结果进行了消费。可以把show函数理解为消费者;

3. 动态获取/添加类成员:分别是上面代码中的hasattr函数和setattr函数;

4. 列表推导式:一种for循环生成列表的pythonic写法,如上面代码中show函数中print的部分和show_info函数中的info的值的部分都用到了列表推导式;

5. 函数reduce:这个函数可以结合lambda表达式来使用,按照lambda表达式中定义的规则对列表中的所有元素进行运算并返回一个值;

6. 表达式lambda:一个lambda表达式就代表一个匿名函数,如上面代码中reduce函数中的部分,定义了一个入参为x和y,函数体为x+" "+y的匿名函数,这个函数体的计算结果也是lambda表达式的返回值。

 

另外:

1. 需要从数据结构两端取数据或append的时候可以用from collections import deque,双向队列;

2. 自省对象的方法有inspect和dir。

 

学习更多python高级用法,推荐阅读:

《Python进阶》中文版

相关文章
|
4月前
|
Python
python基本用法
【9月更文挑战第5天】python基本用法
58 7
|
2月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`"""` 或 `'''`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
65 2
|
3月前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
25 1
|
3月前
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
94 1
|
3月前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
53 2
|
4月前
|
Python
Python中正则表达式(re模块)用法详解
Python中正则表达式(re模块)用法详解
68 2
|
4月前
|
人工智能 数据挖掘 开发者
Python用法
Python用法
36 10
|
3月前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
33 0
|
3月前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
175 0
|
3月前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
150 0