参数类型:
关于函数的参数,咱们常常在一些代码中会发现 def(*args,**kwargs)的表现形式,其中定义的分别是元组和字典:缓存
*args —— tuple(1,) **kwargs —— dict(“k”:“v”)
例如:app
fun(*args,**kwargs ) fun(1,2,3,4,5,a=10,b=40 )
咱们也能够简单的定义一个函数的参数:ide
def add(*args): total = 0 for i in args: total += i print("total = {}".format(total)) if __name__ == '__main__': add(1,2,3,4,5)
Python中有一类排序sort排序函数:函数
def add(*args): total = 0 for i in args: total += i print("total = {}".format(total)) def sorDictValue(dict1): print(sorted(dict1.items(),key=lambda item:item[0],reverse=False)) '''sorted后面接dict1表示把 key 值做为迭代对象, 若是加入dict1.items() 函数表示将字典的 keys 和 value 值都进行迭代''' if __name__ == '__main__': add(1,2,3,4,5) s1 = lambda x,y:x+y print(s1(10,20)) aaa = dict(a=100,b=10,c=50) l = list() sorDictValue(aaa)
匿名函数,就是没有名字的函数,可是为何又须要匿名函数呢,它的做用又是什么
lambda函数是一种快速定义单行的最小函数,能够用在任何须要函数的地方性能
def fun(x,y): return x*y
lambda 版本测试
r = lambda x,y:x*y print(r(10,20))
列表生成式格式:[exp for val in collection if condition]
例如[x*x for x in range(10) if x*x%2==0]
设计
生成器(generator):
方法一;(exp for val in collection if condition)
例如:(x*x for x in range(1,30) if x%2 ==0)
方法二:
使用yield关键字,包含yield语句的函数会被特意编译成生成器。
yield能够理解成return,可是并不退出,只是挂起,恢复的时候从yield下面开始执行。日志
# 列表生成式 a = [x*x for x in range(1,30) if x%2 ==0] print(a) print(type(a)) # <class 'list'> y=list() x=[1,2,3,4,5] y+=x y.append(100) print(y) print(x) # 列表生成器 generator b = (x*x for x in range(1,30) if x%2 ==0) print(b) print(type(b)) # <class 'generator'> def test(l): for i in l: yield i # yield 至关于return print("i = {}".format(i)) m = test([1,2,3,4,5,6,7,8,9]) print(type(m)) # <class 'generator'>
列表生成式直接返回了表达式的结果列表,
而生成器是一个对象,该对象包含了对表达式结果的计算引用,经过循环能够直接输出
生成器不会一次性列出全部的数据,当你用到的时候再列出来,这样下降了内存使用率code
装饰器本质上是一个Python的函数,
它可让其余函数在不须要作任何代码变更的前提下增长额外功能,
装饰器的返回值也是一个函数对象。
它常常用于在且慢需求的场景,好比:插入日志、性能测试、事务处理、缓存、权限校验等场景。
装饰器是解决这类问题的绝佳设计,
有了装饰器,咱们就能够抽离出大量与函数功能自己无关的雷同代码并继续重用
简单来讲,就是在不改变函数自己的状况下,在函数的前面或者后面增长一些额外功能orm
# 原函数 def hello(): print("hello world") hello() # 目的函数 def hello(): print("###########start###########") print("hello world") print("############end############") hello()