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

简介:

参数匿名函数字典排序

*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 ,如需转载请自行联系原作者
相关文章
|
9天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
13 1
|
2月前
|
算法 前端开发
2649. 嵌套数组生成器
2649. 嵌套数组生成器
16 0
|
5月前
|
Python
Python函数的参数学习
Python函数的参数学习
|
5月前
|
Python
python函数的定义
python函数的定义
|
3天前
|
存储
07-python函数的进阶-函数的多返回值/函数的多种传参方式/匿名函数/lambda函数
07-python函数的进阶-函数的多返回值/函数的多种传参方式/匿名函数/lambda函数
C4.
|
1月前
|
Python
Python函数的参数
Python函数的参数
C4.
30 1
|
自然语言处理 JavaScript 前端开发
一文讲懂什么是函数柯里化,柯里化的目的及其代码实现
一文讲懂什么是函数柯里化,柯里化的目的及其代码实现
242 0
一文讲懂什么是函数柯里化,柯里化的目的及其代码实现
|
数据处理
7-2python函数-参数
函数只能处理固定数值的相加,如果能够把需要计算的数字,在调用函数 时,传递到函数内部就好了!
102 0
|
存储 算法 关系型数据库
Python函数专题(函数的参数,不定长参数,参数的解包,函数的作用域,命名空间,递归函数,高阶函数及装饰器语法糖写法等)
Python函数专题(函数的参数,不定长参数,参数的解包,函数的作用域,命名空间,递归函数,高阶函数及装饰器语法糖写法等)
217 0
Python函数专题(函数的参数,不定长参数,参数的解包,函数的作用域,命名空间,递归函数,高阶函数及装饰器语法糖写法等)
|
Python
Python函数参数
Python函数参数传递的方式。实参的类型及示例
89 0