参数匿名函数字典排序、生成式和生成器、装饰器的作用

简介:

参数匿名函数字典排序

*args就是一个元组
**dict就是字典

参数匿名函数字典排序、生成式和生成器、装饰器的作用

参数匿名函数字典排序、生成式和生成器、装饰器的作用

生成式和生成器

[x*x for x in range(0,10)] //列表生成式,这里是中括号
//结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

例子:
In [33]: def fun(n): 
...: for i in range(1,n):
...: print(i*2)

结果:fun(1000000)
会一直打印,直到结束为止,这样占用大量的系统的资源

(x*x for x in range(0,10)) //生成器, 这里是小括号
//结果 <generator object <genexpr> at 0x7f0b072e6140>

一个直接返回了表达式的结果列表, 而另一个是一个对象,该对象包含了对表达式结果的计算引用, 通过循环可以直接输出

参数匿名函数字典排序、生成式和生成器、装饰器的作用

生成式和生成器的区别:
当表达式的结果数量较少的时候, 使用列表生成式还好, 一旦数量级过大, 那么列表生成式就会占用很大的内存,而生成器并不是立即把结果写入内存, 而是保存的一种计算方式, 通过不断的获取, 可以获取到相应的位置的值,所以占用的内存仅仅是对计算对象的保存

yield可以输出多个值 return只能输出一个值(当函数碰到return就跳出整个函数,不会执行下面的):

参数匿名函数字典排序、生成式和生成器、装饰器的作用

参数匿名函数字典排序、生成式和生成器、装饰器的作用

装饰器的作用

 装饰器不改变原函数的运行方式和内容,装饰器就是修饰函数
 给函数叫上特定的功能

参数匿名函数字典排序、生成式和生成器、装饰器的作用

执行结果:
参数匿名函数字典排序、生成式和生成器、装饰器的作用

装饰器传参数:

user_auth=False
def auth(auth_type):
    def test(func):
        def login(*args,**kwargs):
            if auth_type == 'qq':
                global user_auth
                username='shenjie'
                passwd='123'
                if user_auth==False:
                    user=input('please input name: ')
                    pwd=input('please input pwd: ')
                    if user==username and pwd==passwd:
                        print('login is success...')
                        user_auth=True
                    else:
                        print('username or passwd is wroing')
                if user_auth==True:
                    return func(*args,**kwargs)     #执行函数test2()
            else:
                print('only qq。。。')
        return login
    return test
@auth('qq')  #这句话 就是 test2=auth(test2)
def test2():
    print('welcome to test2...')
test2()
















本文转自方向对了,就不怕路远了!51CTO博客,原文链接:http://blog.51cto.com/jacksoner/2066593 ,如需转载请自行联系原作者
相关文章
|
机器学习/深度学习 人工智能 安全
大模型的安全对齐技术
大模型的安全对齐技术
1006 1
大模型的安全对齐技术
|
存储 消息中间件 缓存
9 个 FastAPI 的必知资源
FastAPI 是 Python 开发人员最新、最流行的 API 框架之一。我们的工程师一次又一次需要将一个或多个第三方库与我们的 API 结合使用,以附加额外的功能和特性来丰富我们的项目。
1290 0
|
存储 关系型数据库 MySQL
Nacos 配置数据持久化
Nacos 不仅仅可以作为注册中,还带有配置中心的功能。Nacos 配置默认存储在内存中,对于一些项目往往配置项有成百上千个这些都是非常重要的。在这个场景下我们可以将配置保存到 MySQL 中。来持久化我们的配置,保证 Nacos 重新启动或者服务节点挂掉后配置不会丢失。 环境介绍:nacos-server-1.4.2
1628 0
Nacos 配置数据持久化
|
8月前
|
存储 SQL NoSQL
【赵渝强老师】达梦数据库的逻辑存储结构
本文介绍了达梦数据库的存储结构,包括逻辑和物理存储两部分。逻辑存储结构由数据库(Database)、表空间(Tablespaces)、段(Segments)、簇(Cluster)和页(Page)组成。数据库是最大逻辑单元,包含所有表、索引等;表空间由数据文件组成,用于存储对象;段由簇构成,簇包含连续的数据页;页是最小存储单元。文中还提供了查询表空间、段和页大小的SQL语句,并附有视频讲解和示意图。
327 7
|
Java 应用服务中间件 数据库连接
【一文搞懂Servlet】
【一文搞懂Servlet】
|
Java 应用服务中间件 Go
证书格式有哪些,区别以及如何生成证书
证书格式有哪些,区别以及如何生成证书
776 4
|
传感器 C# 监控
硬件交互新体验:WPF与传感器的完美结合——从初始化串行端口到读取温度数据,一步步教你打造实时监控的智能应用
【8月更文挑战第31天】本文通过详细教程,指导Windows Presentation Foundation (WPF) 开发者如何读取并处理温度传感器数据,增强应用程序的功能性和用户体验。首先,通过`.NET Framework`的`Serial Port`类实现与传感器的串行通信;接着,创建WPF界面显示实时数据;最后,提供示例代码说明如何初始化串行端口及读取数据。无论哪种传感器,只要支持串行通信,均可采用类似方法集成到WPF应用中。适合希望掌握硬件交互技术的WPF开发者参考。
311 0
|
JavaScript 前端开发 算法
【JavaScript】JavaScript 垃圾回收机制深度解析:内存管理的艺术
JavaScript的内存管理和垃圾回收机制涉及栈内存与堆内存、引用计数与标记-清除算法。栈内存存储基本类型和函数调用时的局部变量,而堆内存用于复杂数据类型,如对象和数组。垃圾回收主要通过标记-清除策略,处理不再被引用的对象。现代引擎如V8使用分代收集和增量标记等优化方法,减少停顿并提升性能。开发者应注意避免内存泄漏,如及时解除引用、管理DOM引用和定时器,使用WeakMap和WeakSet等。理解这些原理和最佳实践对于编写高效代码至关重要。
311 5
JDK version和class file version对应关系
JDK version和class file version对应关系
207 1
|
人工智能 自然语言处理
AIGC爱好者社区网站——FlowGPT
【2月更文挑战第9天】AIGC爱好者社区网站——FlowGPT
676 4
AIGC爱好者社区网站——FlowGPT