(D10)Python-函数,lambda匿名函数

版权声明:转载请声明 https://blog.csdn.net/dirckes8813/article/details/83444895

函数Function


函数变量

  • 函数名是变量,他在创建函数时绑定一个函数
  • 一个函数可以作用另一个函数的实参传递
    • 可以吧一个函数传递给另一个函数,另一个函数的形参变量将绑定实参函数

示例1:

看懂如下代码,判断结果
  def myinput(fn):
      L = [1, 3, 9, 5, 7]
      return fn(L)

  print(myinput(max))  # 9
  print(myinput(min))  # 1
  print(myinput(sum))  # 25

函数的嵌套定义

  • 函数嵌套定义是指一个函数理用def语句创建其他函数的情况
  • Python的作用域:
    • 作用域也叫名字空间 ,是访问变量时查找变量的名字范围空间
  • Python中的四个作用域:
作用域 英文解释 英文解释
局部作用域作用域 Local L
外部嵌套作用域作用域 Enclosing E
函数定义所在模块作用域 Global G
Python内建模块作用域 Builtin B

变量名查找规则

  • L—>E—>G—>B
  • 在默认的情况下,变量名赋值会创建改变当前作用域内变量关系

Global 语句

  • 作用:
    • 告诉解释器,global语句声明一个或多个变量,这些变量的作用域为超级模块,也称为全局变量
    • 全局声明(global) 将赋值语句的变量映射到模块文件内部的作用域
  • 语法:
    • global 变量名1 , 变量名2 。。。。
  • 说明:
    • 全局变量如果在函数内部被赋值则必须经过全局绳命(否则会被认为是局部变量)
    • 全局变量实在函数内部不经过声明就可以直接访问
    • 不能先创建局部变量,再用global声明为全局变量此种作法不符合规则
    • global 变量列表里的变量名不能出现在函数的形参列表里

nonlocal语句

  • 作用:
    • 告诉解释器,nonlocal声明的变量不是局部变量也不是全局变量,而是外部嵌套函数的变量
  • 语法:nonlocal 变量名1,变量名2
  • 说明:
    • nonlocal语句只能在被嵌套函数内部进行使用
    • 对nonlocal变量进行赋值将对外部嵌套函数的作用域内的变量进行操作
    • 当有两层或以上函数嵌套时,访问nonlocal变量只对最近的一层变量进行操作
    • nonlocal 语句的变量列表里的变量名不能出现在此函数的形参列表中

lambda匿名函数

  • lambda表达式(又称匿名函数)
    • 作用:
      • 创建一个匿名函数对象
      • 同def类似,但不提供函数名
    • 语法:
      • lambda [函数形参列表]:表达式
    • 说明:
      • lambda 表达式创建的函数只能包含一条表达式
      • lambda 比函数简单,且可以随时创建和销毁,有利于降低程序耦合度

示例:

看懂下面的程序在做什么?结果是什么 ?
    def fx(f, x, y):
        print(f(x, y))
    
    fx((lambda a, b: a + b), 100, 200)
    fx((lambda x, y: x**y), 3, 4)

eval函数和exec函数

  • eval(source, global=None, local=None), 把一个
    字符串source 当成一个表达式来执行,返回表达式执
    行后的结果
  • exec(source, global=None, local=None) 把一个
    字符串source当成程序来执行

猜你喜欢

转载自blog.csdn.net/dirckes8813/article/details/83444895
今日推荐