python_07

三元运算符:

  三元运算符模式:

    接收  =  条件真确的返回值  if  条件  else  条件False的返回值

代码:

# 三元运算符:
ret = '正确' if 3<5 else '错误'
print(ret)

time模块初始:

  time模块是时间模块,方法初学了time.time和time.sleep

    time.time()是计算从1970年到现在的时间数,小数点前边是秒,后边是千分之一秒

    time.sleep()是让程序执行到该代码时沉睡括号内的时间数,秒为单位

代码:

# time模块:
# 导入time模块
import time

# 定义一盒函数让该函数打印一段话并且程序执行五秒钟后执行打印
# 并且得到运行程序时间
def prin():
    s1 = time.time()  # 得到1970年到程序开始时间现在的秒数时间
    time.sleep(5) # 让程序沉睡五秒
    print('再也不做测量') # 执行程序
    s2 = time.time()
    return s2 - s1
print(prin())
# 得到结果:再也不做测量
# 5.001978874206543

装饰器(wrapper):

  1.装饰器的形成过程:

    最简答的装饰器,有返回值的装饰器,带参数的装饰器,万能参数装饰器

  2.装饰器的作用:

    不修改函数的调用方式的情况下添加函数的功能

  3.原则:开放封闭原则:

    开放:对扩展功能是开放的

    封闭:对修改是封闭的

  4.装饰器的固定模式:

代码:

# 装饰器的定义:
# 实现调用func函数时让func函数沉睡5秒并得到程序执行时间
# 导入time模块
import time
def wrapper(f): # 定义一个装饰器,并且传入需要装饰的函数名
    def interior(*args,**kwargs): #定义一个内部函数,为了保证被装饰传入实参是能正常运行
        s1 = time.time() # 得到当前时间
        time.sleep(5) #让调用前就先沉睡五秒就不用去修改别的代码
        ret = f(3,5) # 调用传入函数并赋值给ret
        s2 = time.time() # 得到执行程序后的时间
        # 为了防止被装饰的函数有返回值所以做一个返回
        return '被装饰函数的返回值是:{},本次执行程序时间是:{}'.format(ret,s2-s1)
    return interior

def func(x,y):
    return x+y

# 调用装饰器并且传入需要装饰的函数,为了使调用不变所以增加接收值为被装饰函数名
func = wrapper(func)
# 调用wrapper装饰器,就等于func(),有返回值所以做打印
print(func())

# 被装饰函数的返回值是:8,本次执行程序时间是:5.002722263336182

  

  5.语法糖:

    @装饰器

    被装饰的函数

代码: 对上边代码做优化

# 语法糖:
# 实现调用func函数时让func函数沉睡5秒并得到程序执行时间
# 导入time模块
import time
def wrapper(f): # 定义一个装饰器,并且传入需要装饰的函数名
    def interior(*args,**kwargs): #定义一个内部函数,为了保证被装饰传入实参是能正常运行
        s1 = time.time() # 得到当前时间
        time.sleep(5) #让调用前就先沉睡五秒就不用去修改别的代码
        ret = f(3,5) # 调用传入函数并赋值给ret
        s2 = time.time() # 得到执行程序后的时间
        # 为了防止被装饰的函数有返回值所以做一个返回
        return '被装饰函数的返回值是:{},本次执行程序时间是:{}'.format(ret,s2-s1)
    return interior

# func = wrapper(func)
@wrapper  # 相当于
def func(x,y):
    return x+y

# 调用装饰器并且传入需要装饰的函数,为了使调用不变所以增加接收值为被装饰函数名
# func = wrapper(func)  这里被替换到被装饰函数的顶头一行写入@装饰器
# 调用wrapper装饰器,就等于func(),有返回值所以做打印
print(func())

# 被装饰函数的返回值是:8,本次执行程序时间是:5.002722263336182

      相当于:被装饰函数 = 装饰器(被装饰函数名)

  6.装饰带参数的装饰器:

    装饰器增加形参*args,**kwargs,装饰器内部函数调用时也要传入相同的形参

猜你喜欢

转载自www.cnblogs.com/aikang525/p/10463172.html
今日推荐