Twelve 装饰器/内置函数

 

1、装饰器:装饰器的本质是闭包,而且装饰器其实就是个函数而已

# 标准版装饰器
def wrapper(f):
    def inner(*args,**kwargs):
        '''执行被装饰函数之前的操作'''
        ret = f(*args,**kwargs)
        '''执行被装饰函数之后的操作'''
        return ret
    return inner

    装饰器:在不改变原函数调用的方式上,给原函数添加一些额外的功能。登陆验证,写日记,执行效率等等

    开放封闭原则:对拓展开放、对修改封闭

2、内置函数:

    locals:   函数会以字典的类型返回当前位置的全部局部变量

    globals:   函数以字典的类型返回全部全局变量

    eval :     执行字符串类型的代码,并返回最终结果

    exec:   执行字符串类型的代码流

    map:    生成器表达式循环模式

# 模板
print[i for i in map(lambda x: x ** 2, [1, 2, 3, 4, 5]])  # 使用 lambda 匿名函数  可[]添加多个列表
# 结果 [1, 4, 9, 16, 25]

    reduce:    可以key

# 模板
reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
# 结果 15

    complie:  将字符串类型的代码编译

    hash:     获取一个对象(可哈希:int,str,bool,tuple)的哈希值

    id:     用于获取对象的内存地址

    help:   函数用于查看函数或模块用途的详细说明

    callable:     用于检查一个对象是否是可调用的,如果是返回True,否则False

    range:   可创建一个整数对象,一般用在for循环中

    next:     内部实际使用了__next__方法,返回迭代器的下一个项目

    iter:    用来生成迭代器

    float:     将整数和字符串转换成浮点数

    进制转换:  bin:将十进制转换成二进制字符串并返回

              oct:将十进制转换成八进制字符串并返回

           hex:将十进制转换成十六进制字符串并返回

    abs:    返回数字的绝对值

    divmod:   计算除数与被除数的结果,返回一个包含商和余数的元祖

    round:   保留浮点数的小数位,默认保留整数

    pow:      求x**y次幂

    minmax:  将最小值、最大值返回

# 模板
dic = {'a':3,'b':2,'c':1}
print(min(dic,key=lambda x:dic[x]))

 

    bytes/str:    编解码的方式

# 第一种
b1 = s1.encode('utf-8')
s2 = b1.decode('utf-8')
print(b1,s2)
#第二种
b1 = bytes(s1,encoding='utf-8')
s2 = str(b1,encoding='utf-8')
print(b1,s2)

    all:    可迭代对象中,全是True才返回True

    any:    可迭代对象中,有一个True就返回True

    sorted:  对所有可迭代对象进行排序操作

    zip:     拉链方法用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

# 模板
l1 = [1, 2, 3]
l2 = ['a', 'b', 'c', 5]
l3 = ('*', '**', '***')
iter1 = zip(l1, l2, l3)
for i in iter1:
    print(i)
# 面试题
l1 = [1,2,3]
l2 = ['a','b','c']
dic = (zip[l1,l2])  # 一行代码将两个列表对应变成字典

    filter:     返回一个迭代器,类似与列表推导式的筛选模式

# 模板
l1 = [2, 4, 5, 6, 7, 8, 10]
iter2 = filter(lambda x: x % 2 == 0, l1)
for i in iter2:
    print(i)

 

posted @ 2019-01-04 21:47  pythonernoob  阅读(117)  评论(0)    收藏  举报