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()
      
  • 相关阅读:
    mysql常用指令
    mysql数据库文件简介和应用
    redis配置参数简介
    shell输入输出重定向
    memcached添加日志输出
    java 随机数种子
    统计学习方法——第四章朴素贝叶斯及c++实现
    统计学习方法——第二章的c++实现
    python函数带不带括号的问题
    numpy中的range()
  • 原文地址:https://www.cnblogs.com/Programmatic-yuan/p/12931985.html
Copyright © 2011-2022 走看看