zoukankan      html  css  js  c++  java
  • PythonDay15

    第十五章装饰器_递归

    今日内容

    带参数装饰器

    多个装饰器修饰一个函数

    递归

    带参数的装饰器

    # 判断argv,当登录不同的网页,会有不同的装饰效果
    def auth(argv):
      def warpper(func):
          def inner():
              if argv == '博客园':
                  func()
              elif argv == '码云':
                  func()

          return inner

      return warpper


    @auth('博客园')
    def home_page0():
      print('欢迎来到博客园主页')


    @auth('码云')
    def home_page1():
      print('欢迎来到码云主页')


    home_page0()
    home_page1(

    多个装饰器修饰一个函数

    # 多个函数装饰一个函数时,先执行离被装饰函数最近的装饰器
    def auth(func): # wrapper1装饰器里的 inner
      def inner(*args,**kwargs):
          print("额外增加了一道 锅包肉")
          func(*args,**kwargs)
          print("锅包肉 38元")
      return inner

    def wrapper1(func): # warpper2装饰器里的 inner
      def inner(*args,**kwargs):
          print("额外增加了一道 日魔刺生")
          func(*args,**kwargs)
          print("日魔刺生 白吃")
      return inner

    def wrapper2(func): # 被装饰的函数foo
      def inner(*args,**kwargs):
          print("额外增加了一道 麻辣三哥")
          func(*args,**kwargs)
          print("难以下嘴")
      return inner

    @auth       # 1           7
    @wrapper1   #   2       6
    @wrapper2   #   3   5
    def foo():   #     4
      print("这是一个元宝虾饭店")

    foo()

    递归

    递归
    1.不断调用自己本身
    2.有明确的终止条件
    递归的最大深度,官方说明是1000,实际测试是994/997/998

    # 循环一个列表,打印出每一个元素
    li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn",[4,5,6,[7,[11,12,34,5],10,8,9]]]
    def func(lst):
      for i in lst:
          if type(i) == list:
              func(i)
          else:
              print(i)
    func(li)
  • 相关阅读:
    [Angularjs]$http.post与$.post
    [Bug]Unable to start process dotnet.exe
    [Node.js]Restful Api
    [Node.js]Express web框架
    [Node.js]web模块
    [Winform]使用winform制作远程桌面管理工具
    [Node.js]Domain模块
    [Asp.net web api]缓存
    [Node.js]DNS模块
    WEB传参调用EXE
  • 原文地址:https://www.cnblogs.com/xuyuwei/p/11397897.html
Copyright © 2011-2022 走看看