神奇语言 python 装饰器 内置函数

装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。 首先,让我们讨论下如何写你自己的装饰器。

这可能是最难掌握的概念之一。我们会每次只讨论一个步骤,这样你能完全理解它。

import time
    #定义一个函数
    x=func#把foo的内存地址富裕给了x  x就是foo 的内存地址
    #把func 形参赋值给x变量

    def wapeer():
        #定义个函数
        s_time=time.time()
        x()#就是执行foo()
        ss_time=time.time()
        print(ss_time-s_time)
    return wapeer #定义函数的时候,西边的代码睡返回的内存地址
        #把函数名 当做值返回
@inner #foo= inner(foo)#被装饰的函数正上方加一个装饰器的名字
def foo():
    print("is ")
foo()

@ 语法糖

如果你接触 Python 有一段时间了的话,想必你对 @ 符号一定不陌生了,没错 @ 符号就是装饰器的语法糖,它放在函数开始定义的地方,这样就可以省略最后一步再次赋值的操作。
def use_logging(func):

    def wrapper():
        logging.warn("%s is running" % func.__name__)
        return func()
    return wrapper

@use_logging
def foo():
    print("i am foo")

foo()

如上所示,有了 @ ,我们就可以省去foo = use_logging(foo)这一句了,直接调用 foo() 即可得到想要的结果。你们看到了没有,foo() 函数不需要做任何修改,只需在定义的地方加上装饰器,调用的时候还是和以前一样,如果我们有其他的类似函数,我们可以继续调用装饰器来修饰函数,而不用重复修改函数或者增加新的封装。这样,我们就提高了程序的可重复利用性,并增加了程序的可读性。

装饰器在 Python 使用如此方便都要归因于 Python 的函数能像普通的对象一样能作为参数传递给其他函数,可以被赋值给其他变量,可以作为返回值,可以被定义在另外一个函数内。

 

内置函数:


print(abs(-10))#绝对值
print(all([1,2,3,]))#检验迭代对象 都为真的时候才为真
print(any[0,0,0,1,]) #有一个为真的时候就为真
print(ascii("aelx"))#在ascii码中原生显示
b=bytearray("meet",encoding="utf-8")
print(b[0])
sorted 排序
例题:
dic= {1:2,3:4}
ls=[1,2,3,4,5]
def func(ls):
    lst=[]
    for i in  ls:
        lst.append(i**i)
    return lst
print(sorted(func(ls),reverse=True))
print(sorted(dic.values(),reverse=True))
print(sorted({1:2,3:4},reverse=True))
filter 过滤:
例题:
dic = [{"name":"alex","age":17},{"name":"aqwe","age":19}]
print(list(filter(lambda x:x["age"]>17,dic)))
 map  () 映射函数  可以快速将多个元素相同的可迭代对象进行上下累加=返回的是一个数据
lst=[11,200,300,400,505]
def func(x):
    return x**2
print(list(map(func,lst)))
reduce# 快速求一个可迭代对象的累计算
round # 四舍五入


posted on 2019-01-15 16:03  蠢才  阅读(184)  评论(0编辑  收藏  举报

导航