一.装饰器
1.装饰器:
解释:装饰器的本事就是一个函数,不改动主代码的情况下,增加新功能。返回值也是一个函数对象。
2.装饰器工作过程
import time def func(): print('主功能') time.sleep(1) def timer(f): #形参就是替换原函数func def inner(): print('开始') start_time=time.time() f() #调用函数func end_time=time.time() print('运行时间:',end_time-start_time) print('结束') return inner #这里只能是inner 不能写inner() func=timer(func) #timer(func)==inner func()
调用两个函数:
import time def func(): print('新加辅助功能') time.sleep(1) def func1(): print('主功能') time.sleep(1) def timer(f,g): #形参就是替换原函数func def inner(): print('开始') start_time=time.time() g() #调用函数func1 f() #调用函数func end_time=time.time() print('运行时间:',end_time-start_time) print('结束') return inner #这里只能是inner 不能写inner() func=timer(func,func1) #timer(func)==inner func()
3.语法糖:
如果有多个函数,不能每次否输入#func=timer(func),何况函数名定义也是不一样的。引入语法糖。
import time def timer(f): def inner(): start_time=time.time() f() time.sleep(1) print(time.time()-start_time) return inner @timer #语法糖==>func1=timer(func1) def func1(): print(' 主功能 ') func1()
4.开放封闭原则
1.对扩展是开放的
必须允许代码扩展,添加新功能。
2.修改封闭,这样不会影响其他用户使用该函数。
5.带有多个参数的装饰器
def warpper1(func): def inner(): print('warpper1,before func') func() print('warpper1,after func') return inner def warpper2(func): def inner(): print('warpper2,before func') func() print('warpper2,after func') return inner @warpper2 @warpper1 def f(): print('in Func') f() 结果: warpper2,before func #这里需要注意执行顺序。相当于两层。 warpper1,before func in Func warpper1,after func warpper2,after func
二. 内置函数
1.abs(X) #函数返回数字的绝对值,X是数字 不能是其他类型
2.all() #函数用于判断给定的可迭代参数iterable中的所有元素都是否为TRUE,如果都是true则返回true,若含有[],{},(),0,False,none都返回False。
3.any() #函数用于判断给定的可迭代参数iterable中的所有元素都是否为False,如果都是False则返回False,若含有[],{},(),0,False,none都返回True。
4.bin() #返回一个整数int,或者长整型long int 的二进制表示。
5.bool() #函数返回将给定的参数转化成布尔类型,如果没有参数,返回False。
6.bytearray()
print(bytearray([1,2,3])) print(bytearray('中',encoding='utf-8')) print(bytearray(5)) 结果: bytearray(b'x01x02x03') bytearray(b'xe4xb8xad') bytearray(b'x00x00x00x00x00')
7.callable() #函数用于检查一个对象是否可调用的。
8.chr() #用一个范围在range(256)内的(0~255)整数作为参数,返回一个对应的字符。
9.locals() #函数会议字典的类型返回当前位置的全部局部变量
globals() #函数以字典的类型返回全部变量
a=123 b=[15,55,58] def fun(): c=1 print(locals()) print(globals()) fun() 结果: {'c': 1} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object
10.eval() #执行字符串代码,并返回最终结果
print(eval(input('多岁的'))) #具有执行功能 print(eval('2+8')) 结果: 多岁的 10
11.exec() #执行字符串类型的代码。
s=''' for i in [1,2,3]: print(i) ''' exec(s) #执行s的字符串的代码 结果: 1 2 3
12.compile() #将字符串类型的代码编译,代码对象能够通过exec语句来执行或者eval进行求值。
13.hash id 内存相关 #获取一个对象,(可哈希对象:int,str,bool,tuple)的哈希值。
14.open() #用于打开一个文件,创建一个file,相关方法调用读写。
15.help() #函数用于查看函数或模块用的详细说明。
16.callable() #函数用于检查一个对象是否可调用。如果返回True,object仍然可能调用失败;如果返回是False,object绝对不会成功。
17.dir #函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。