一:几个重要的内置函数
#codeing:UTF-8 #__author__:Duke #date:2018/3/8/008 # abs() #绝对值函数 # all() #判断空 # eval() #还原数据,同时也是一个计算器 # frozenset() #不可变集合 #filter 函数 str = [‘a‘,‘b‘,‘c‘,‘d‘] def fun(s): if s !=‘a‘: #过滤条件 return s ret = filter(fun,str) #功能用作过滤 # for i in ret: # print(i) print(ret) # map 函数 str = [‘a‘,‘b‘,‘c‘,‘d‘] def fun2(s): return s+‘duke‘ ret = map(fun2,str) #作用添加,修剪东西 for i in ret: print(i) print(ret) # reduce 函数 from functools import reduce def add(x,y): return x+y #reduce 的结果就是一个值,不是什么对象 print(reduce(add,range(1,10))) # lambda 函数 def add(a,b): return a+b lambda a,b:a+b #匿名函数 等同于 add函数
二:装饰器
#codeing:UTF-8 #__author__:Duke #date:2018/3/8/008 #装饰器 python 重点 #一:作用域 L E(嵌套作用域) G(全局变量) B(内置变量) 原则 # x = 10 #全局变量 # def f(): # t = 5 #局部变量 # def inner(): # count =7 #局部变量 # return 1 # #二:高阶函数 两个条件 1:函数名可以作为参数输入 2:函数名可以作为返回值 #三:闭包 # def outer(): # x = 10 # def inner(): #内部函数 # print(x) #引用外部的变量 # return inner #这个函数就叫闭包函数 #inner() 局部变量,全局无法调用 import time #假设还有很多函数 #我现在需要算每一个函数的执行时间,必须满足不改变原函数的情况下进行,可以为功能拓展 #这里我们可以选用装饰器为其拓展功能,切不改变原函数的调用方式 def show_time(f): #装饰器函数 def two(): #这个闭包函数的功能就是多一层包装,使其不改变原来的调用方式 start_time = time.time () f() end_time = time.time () print(end_time - start_time) return two @show_time #fun1=show_time(fun1)# 这里调用返回的结果为 two 函数名 def fun1(): print("fun1...") time.sleep(1) @show_time # 等同于 fun2=show_time(fun2# 这里调用返回的结果为 two 函数名 def fun2(): print("fun2...") time.sleep(2) fun1() #此时调用该函数,它不仅仅有前面fun1 的功能,同时也打印出了该函数的执行时间
功能函数加参数(不定参数)
import time #功能函数加参数 不定参数的添加 def show_time(f): def two(*x,**y): f(*x,**y) return two @show_time def add(*a,**b): #加法器 sum = 0 for i in a: sum += i print(sum) time.sleep(1) add(1,2,3,4,5)