zoukankan      html  css  js  c++  java
  • 装饰器和内置函数

    一,装饰器

    1、什么是装饰器?

     装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。

    装饰器的本质其实就是闭包

    (1)求函数运行时间

    import time
    print(time.time())
    #从1970年开始,按秒计算
    import time
    def func():
        start_time = time.time()  # 代码运行之前的时间
        print('这是一个func函数')
        time.sleep(3)  # 阻塞,睡一下, 1 是睡一秒
        print(time.time() - start_time)  # 代码运行后的时间
    func()
    
    #这是一个func函数
    #3.0027832984924316
    import time
    def func():
        print('这是func函数')
        time.sleep(1)
    
    def func1():
        print('这是func1函数')
        time.sleep(2)
    
    def func2():
        print('这是func2函数')
        time.sleep(3)
    
    def times():
        start_time = time.time()  # 代码运行之前的时间
        func2()
        print(time.time() - start_time)  # 代码运行后的时间
    times()
    View Code
    import time
    def func():
        def inner():
            time.sleep(2)
            print('这是inner函数')
        return inner
    inner = func()
    inner()

    二、内置函数

    什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。

    圈起来的部分之后补充

    print(abs(-98))          # 求绝对值  正的负的 出来后全都是正的  **
    print(all([1,0,3,4]))    # all 判断元素中都为真的才是真  * 
    print(any([1,False,0]))  # any 判断元素中只要有一个为真就是真 *
    print(ascii(''))       #  查看元素对应的内容
    print(bin(10))           # 将10进制转行2进制       **
    print(bool([1]))         # 将内容转换成布尔值
    b = bytearray('meet'.encode('utf-8'))
    # 返回一个新的元组,元组可以切片,切片的内容对应的ascii表
    print(b[3])
    print(bytes('',encoding='utf-8'))                *
    print(''.encode('utf-8'))
    def func():
        pass
    
    print(callable(func))   # 检查这个对象是否可以调用    True
    print(chr(65))  # 输入数字,返回对应的ascii表位上对应的内容   **
    a = compile('input(">>>")','','exec')
    exec(a)   #无用
    print(complex(8))  # 复数   
    print(dict(key=1,name=2))
    print(dir([1,2]))  # 查看对象的所有方法     ***
    print(divmod(5,2))   # 返回一个元组,元组的第一个元素是商,第二个元素是余数  **
    # print(enumerate)   # 枚举
    
    li = [1,2,3,4,5,6,7]
    
    for i,em in enumerate(li,1):  # enumerate不写值默认是0         ****
        # enumerate  第一个参数是可迭代对象,第二参数是计数
        print(i,em)
    s = """9+4+3"""    # 将字符串中内容执行
    print(eval(s))     # 上班以后禁止使用
    li = [1,23,4,]
    s = """
    def func():
        print(1)
    func()
    """
    g = exec(s)
    print(g)
    print(li)         # 公司非常禁止
    print(float(20))
    i = 3.56
    print(int(i))
    # 's'.format()  # 字符串的方法
    print(format('a','>10'))      # 公用函数  右对齐
    print(format('a','<10'))      # 公用函数  左对齐
    print(format('a','^10'))      # 公用函数  居中
    
    print(format(3,'b'))
    
    print(format(3,'08b'))  # 00000011   二进制
    print(format(3,'o'))    # 八进制
    print(format(3,'x'))    # 八进制
    a = 1
    def func():
        pass
    
    print(globals())  # 查看全局都哪些内容            **
    print(b)
    print(globals().get('b'))
    dic = {[1,2,3]:1}
    print(hash([1,2,3]))  #求对象的哈希值 
    print(help(input))      # 不知道怎么用的时候可以使用help查看一下
    print(hex(33))           #  将10进制转换成16进制  *
    print(id('s'))             # 查看数据的内存地址   ***
    print(input(">>>"))         # 获取用户输入的内容  *****
    print(int())                  # 将数据转换成整型    *****
    print(isinstance([1,2,3],str))   #判断这个数据时什么类型  ***
    #iter                             # 判断是不是可迭代对象   *** 
    # len()                              # 获取数据的长度     *****
    list()                              # 转换成一个列表  ***
    def func():
        a = 1
        print(locals())  # 查看局部空间的内容       ***
    
    func()
    print(max(1,2,3,4,5))   # 求最大值              ***
    print(min(1,2,3,4))       # 求最小值            ***
    print(memoryview(b'a'))        # 查看字节的内存地址
    print(next())               # 迭代器中的取下一个值  ***
    print(oct(9))                 # 将10进制转换成8进制  **
    print(ord(''))     # 输入的是unicode编码的内容    **
    print(chr(20013))    # 输入的是unicode的内容        **
    print(pow(2,3))  #两个参数的时候求幂运算
    print(pow(2,3,3))    #三个参数的时候先求幂运算在取余
    print('你好','我好',sep=' ',end='')
    print('大家好')
    
    print('你好',file=open('a','w',encoding='utf-8'))
    
    print('123')         # 是处理后给你显示的    *****
    print(repr('123'))   # 显示的是原数据        ***
    print(list(reversed()))  # 反转 元组,列表,字符串    ****
    print(round(5.472343212,3))   #四舍五入      ***
    li = [1,2,3,4]
    # s = slice(2)   #切片
    print(li[3])
    print(sum({1:4,2:5}))   #求和     ***
    print(type('aasas'))    # 获取数据类型
    nt(vars(str))
    print(locals())    #没啥用
    li = [1,2,3,4]
    ls = [5,6,7,4,5,6]
    lst = ['a','b','c','d','e']
    print(list(zip(li,ls,lst)))  #拉链                  ****
    __import__('time')   # 导入的方式 ---- > 反射

    ************************************************  重要的   :*************************************************

    lambda  匿名函数,为了解决一些简单的需求而设计的一句话函数

     lambda 关键字  x参数:x是返回值           lambda 的返回值只能是一个

    print((lambda x:x)(5))
    f = lambda x,y:x*y
    print(f.__name__)     #<lambda>
    print(f(5,6))

    sorted   排序函数

    print(sorted([7,2,3,4],reverse=True))
    li = ['你好啊','我好','大家都挺好']
    
    def func(li):
        return len(li)
    print(sorted(li,key=func)) # key指定一个排序的规则
    
    print(sorted(li,key=lambda x:len(x)))
    li = [
        {'age':19},
        {'age':52},
        {'age':48},
        {'age':30},
    ]
    
    def func(li):
        return li['age']
    print(sorted(li,key=func))
    
    print(sorted(li,key=lambda x:x['age']))

    filter   筛选过滤

    语法: filter(function,iterable)

    function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据

    li = [1,2,3,4]
    
    def func(a):
        if a > 2:
            return a
    print(list(filter(func,li)))
    li = [1,2,3,4]
    def func(li):
        for i in li:
            if i > 2:
                print(i)
    
    func(li)
    
    li = [1,2,3,4]
    
    print(list(filter(lambda x:x>2,li)))

    map  映射函数

    语法: map(function,iterable) 可以对可迭代对象中的每一个元素进映射,分别取执行function

    li = [1,2,3,4,5]
    
    def func(i):
        return i+10
    print(list(map(func,li)))  #映射
    li = [1,2,3,4,5]
    print(list(map(lambda x:x+10,li)))

    reduce     是做累计算的

    from functools import reduce
    
    li = [1,2,3,4,5]
    
    def func(x,y):        # x=12345
        return x*10+y     # reduce 是做累计算的
    print(reduce(func,li))
  • 相关阅读:
    phpmyadmin漏洞复现
    ecshop漏洞复现
    php漏洞复现
    discuz漏洞复现
    gitlab漏洞复现
    Elasticsearch漏洞复现
    flask漏洞复现
    Hikari配置
    DOM&BOM的起源,方法,内容,应用
    vue 实现div方框内大图自由拖拽
  • 原文地址:https://www.cnblogs.com/Xiao_Xu/p/10554927.html
Copyright © 2011-2022 走看看