zoukankan      html  css  js  c++  java
  • 装饰器练习

    1. 整理今天的笔记以及课上代码,以及代码的执行流程.

    2. 将模拟博客园使用装饰器进行编写.

    3. 看代码写结果:

      def wrapper(f):
          def inner(*args,**kwargs):
              print(111)
              ret = f(*args,**kwargs)
              print(222)
              return ret
          return inner
      
      def func():
          print(333)
      
      print(444)
      func()
      print(555)
      
      
      
      #输出结果
      
      444
      333
      555
      
    4. 编写装饰器,在每次执行被装饰函数之前打印一句’每次执行被装饰函数之前都得先经过这里’

    def func(f):
        def foo():
            print("每次执行被修饰函数都得先经过这里")
            f()
        return foo
    @func
    def f1():
        print("你好")
    # f1 = func(f1)
    f1()
    
    1. 为函数写一个装饰器,把函数的返回值 +100 然后再返回。

      @wrapper
      def func():
          return 7
      
      result = func()
      print(result)
      
      
      
      
      答案如下
      
       def wrapper(f):
          def foo():
              return f() + 100
          return foo
      @wrapper
      def func():
          return 7
      
      result = func()
      print(result)
      
      
      
      
      
      
      
      
    2. 请实现一个装饰器,通过一次调用使被装饰的函数重复执行5次。

    def func(f):
        def foo():
            for i in range(5):
                f()
        return foo
    @func
    def f1():
        print("nihao")
    f1()
    
    1. 请实现一个装饰器,每次调用函数时,将被装饰的函数名以及调用被装饰函数的时间节点写入文件中。

      可用代码:
      import time
      struct_time = time.localtime()
      print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time)) # 获取当前时间节点
         
      def func():
          print(func.__name__)
      函数名通过: 函数名.__name__获取。
      
      import time
      def wrapper(f):
          def foo():
              with open("time","a",encoding = "utf-8") as f1:
                  struct_time = time.localtime()
                  f1.write(time.strftime("%Y-%m-%d %H:%M:%S", struct_time))
                  f1.write(func.__name__)
                  f()
          return foo
      @wrapper
      def func():
          print("不无聊")
      func()
      
      
      
      
      
  • 相关阅读:
    两台centos,用yum install 安装,一台成功,一台失败
    django 删除默认app
    FFmpeg
    安装nginx
    django markdown格式化变量
    安装python3.8
    安装 docker
    Centos7 安装selenium webdriver环境
    收集网页数据方法
    logstash 6.3.2下载地址
  • 原文地址:https://www.cnblogs.com/hualibokeyuan/p/11234230.html
Copyright © 2011-2022 走看看