函数作用域、匿名函数

一、作用域


1、作用域即范围

变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称

- 全局范围(内置名称空间与全局名称空间属于该范围):全局存活,全局有效  

- 局部范围(局部名称空间属于该范围):临时存活,局部有效 

2、作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关

3、查看作用域:globals(),locals()

  • L (Local) 局部作用域
  • E (Enclosing) 闭包函数外的函数中
  • G (Global) 全局作用域
  • B (Built-in) 内建作用域

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

二、匿名函数

即不再使用 def 语句这样标准的形式定义一个函数

lambda [arg1 [,arg2,.....argn]]:expression

比如:

lambda x:x+1

实例1:

name = '那谁'
func = lambda x:x+'不爱你'
ns = func(name)
print(ns)

输出结果:那谁不爱你

实例2:

func = lambda x,y,z:x*2+y*3-z//8
q = func(3,5,64) #q = 3*2+5*3-64//8 = 6+15-8 = 13
print(q)

输出结果:13

原文地址:https://www.cnblogs.com/lishuangtu/p/8940771.html