潭州课堂25班:Ph201805201 第九课 函数作用域和匿名函数 (课堂笔记)

匿名函数:

  lambda obj:str(obj).isdigit

  语法规则:   lambda 参数:表达式

  列:

 

    ma1 = map( lambda obj:'binbin','abcdef' )
    print( list(ma1) )

    ['binbin', 'binbin', 'binbin', 'binbin', 'binbin', 'binbin']


闭包
  def fun_1():
   print( '正在调用01' )

   def fun_2():
   print( '正在调用02' )
   return fun_2        

  f_1 = fun_1()      正在调用01
  f_1()           正在调用02
  闭包是函数里边嵌套函数,外层的函数返回里层,这种情况叫闭包,他是种特殊的函数的调用,
  闭包也可以得到外层函数的变量,上函数内外部的桥梁


函数作用域

    

 

  global 的使用,  声明全局变量
  x = 1
  def fun_1():
   global x # 声明全局变量
   x += 1 # 在没声明前不可直接修改,否则去不去啊
   print( x )

   def fun_2():
   print( x )
   return fun_2

  f_1 = fun_1()
  f_1()
  
  
  nonlocal 局部变量的声明
   def fun_1():
   x = 1

   def fun_2():
   nonlocal x # 声明局部变量
   x += 1 # 声明后可直接查,改
   print( x )
   return fun_2

  f_1 = fun_1()
  f_1()

 递归

  def fun_a( n ):
    if n == 1:
      return 1
    return fun_a( n-1 )*n

  print( fun_a(5) )

  自己调用自己

 

 

回调

  def fun_a( a ):
   if a:
   fun_b()
   else:
   print('没有被调用')

  def fun_b():
   print('正在调用')

  fun_a( False )

 

 

posted @ 2018-06-08 09:24  25班Ph201805201  阅读(133)  评论(0编辑  收藏  举报