zoukankan      html  css  js  c++  java
  • 函数拾遗(递归+带参数的装饰器)

    递归函数+带参数的装饰器

    递归函数

    • python递归的最大深度为1000层:为了节省内存空间,不要让用户无限使用空间(前端可以调用无数次)

    • 递归要尽量控制次数,如果要很多层才能解决问题,不适合用递归解决

    • 循环与递归的关系

      • 递归不是万能的,递归比起循环来说更占内存
    • 修改递归层数

      import sys
      old=sys.getrecursionlimit()				#获取最深递归层数
      print(old)
      sys.setrecursionlimit(100000000)		#修改最深递归层数为100000000层
      cnt=0
      def func():
          global cnt    
          cnt+=1
          print(cnt)    
          func()    
          print('999')
      func()
      
    • 怎么让递归函数停下来

      • 一个递归函数要想结束,必须在函数内写一个return,并且return的条件必须是一个可达到的条件
      import sys
      sys.setrecursionlimit(100000)
      cnt=0
      def func():
          global cnt
          if cnt==3:
              sys.exit()/return
          print(cnt)
          cnt += 1
          func()
          print('345')func()
      

    带参数的装饰器

    • 带参数的装饰器:

      #带参数的装饰器示例
      def outer(cont):
      	def wrapper(f):
          	def inner(*args,**kwargs):            						re=f(*args,**kwargs)
              	return re        
              return inner    
          return wrapper
      @outer(content)
      
      import time
      def outer(flag):
          def wrapper(f):
              def inner(*args,**kwargs):
                  start=time.perf_counter()
                  re=f(*args,**kwargs)
                  if flag:
                      t=time.perf_counter()-start
                      print('执行{}函数花费了{:.7f}s'.format(f.__name__,t))
                  else:
                      pass
                  return re
              return inner
          return wrapper
      @outer(True)				#带参数的装饰器(语法糖)
      def f1():
          print('f1函数执行成功')
      @outer(False)
      def f2():
          a=1
          b=2
          c=3
          print(a,b,c)
      f1()
      f2()
      
  • 相关阅读:
    JavaScript实现常见排序算法
    执行环境与作用域
    几种常见的三列布局,中间自适应,两边定宽
    常见的两列布局
    CodeAtlas For Sublime Text
    增加调用路径查找
    增加调用被调用个数隐喻
    sublime 插件
    分析大工程
    Jmeter 分布式测试
  • 原文地址:https://www.cnblogs.com/Programmatic-yuan/p/12931985.html
Copyright © 2011-2022 走看看