变量,递归函数,高阶函数

局部变量
函数就是变量的作用域,仅在当前函数起作用。

def name():
	x=1 #局部变量

全局变量
在函数内是不能修改全局变量的值。

x=1 #全局变量
def name():

在global之后,全局变量也是可以在函数内修改的。
变量内存的回收机制
python解释器当变量名不存在时,变量内存会被回收。
递归函数
在函数内部,可以调运其他函数。如果一个函数在内部调运自身,这个函数就是递归函数。
特性:

  1. 必须要有一个明确的结束条件。

  2. 每次进入更深的一层递归时,问题规模相比上次都应有所减少。

  3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调运是通过栈(stack)这种数据结构实现的,每当进入一个函数调运,栈就会加一层栈帧。每当函数返回,栈就会减少一层栈帧。由于栈的大小不是无限的,所以,递归调运的次数过多,会导致栈溢出)

    def calc(n): 
    	print(n)
    	if int(n/2) > 0: 
    		return calc(int(n/2)) 
    	print("-->",n) 
    calc(10)
    

高阶函数
变量可以指向函数,函数的参数支持能接受变量,那么一个函数就可以接受另一个函数作为参数,这种函数就称之为高阶函数。

  1. 把一个函数名当做实参传递给另一个函数。

  2. 返回值中包含函数名。

    def add(a,b,f):
    return f(a) + f(b)
    x = add(1,-6,abs)
    print(x)
    匿名函数
    没有函数名的函数

    calc = lambda x:x*3
    print(calc(2))
    嵌套函数
    在一个函数体内定义另一个函数。

    def foo(): 
    	print("in the foo ") 
    	def bar(): 
    		print("in the bar") 
    	bar() 
    foo()
    

    装饰器
    装饰器:装饰器本质是函数,(函数是有特定的能),装饰器的功能就是装饰其他函数,就是为其他函数添加附加功能。
    原则:

    • 不能修改被装饰函数的源代码。

    • 不能修改被装饰的函数的调运方式。
      (装饰器对被装饰函数来说是透明的)
      实现装饰器知识储备
      1.函数即“变量”
      2.高阶函数
      (1)把一个函数名当做实参传递给另一个函数。
      (2)返回值中包含函数名。
      3嵌套函数
      装饰器=高阶函数+嵌套函数
      例如:

       import time
       def timer(func):
           def logges(*args,**kwargs):
               func(*args,**kwargs)
               format_time = "%Y-%m-%d %X"
               tim_current = time.strftime(format_time)
               print(tim_current)
           return logges
       @timer
       def test1():
           print("in the test1")
       test1()
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值