Python:globls\locals\lambda

本文深入探讨Python中的作用域规则,包括局部作用域、外部嵌套函数作用域、全局作用域及内置作用域,并解析globals(), locals(), global, nonlocal等关键字的使用。同时,介绍了def语句创建函数、lambda表达式、eval与exec函数的功能和语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

globals() 函数 和 locals 函数

globals()  返回当前全局作用域内变量的字典
locals()  返回当前局部作用域内变量的字典



**函数变量**
函数名是变量,它在创建函数时绑定一个函数

一个函数可以作用另一个函数的实参传递
可以把一个函数给另一个函数,另一个函数的形参变量将
绑定实参函数

函数可以作用另一个函数的返回值

**函数的嵌套定义** 
函数嵌套定义是指一个函数里用def语句来创建其它函数的情况


**python的作用域**
作用域也叫名字空间,是访问变量时查找变量的名范围空间

python中的四个作用域 LEGB
作用域             英文解释          英文缩写
局部作用域          Local(function)          L
外部嵌套函数作用域  Enclosing Fucntion local  E
函数定义所在模块(文件)的作用域  Global(module)  G
Python内建模块的作用域     Builtin(python)    B


变量名的查找规则
L --->  E  ---> G  ---->  B
注:
	在默认的情况下,变量名赋值会创建或改变当前作用域
 	内变量的绑定关系

global 语句

作用:
	1. 告诉解释执行器,global语句声明的一个或多个变量,这
		些变量的作用域为模块级的作用域,也称作全局变量
	2. 全局声明(global) 将赋值语句的变量映射到模块文
		件内部的作用域
语法:
	global 变量名1, 变量名2, ....


说明:
	1. 全局变量如果要在函数内部被赋值,则必须经过全局声明
  		(否则会被认为是局部变量)
	2. 全局变量在函数内部不经过声明就可以直接访问(取值)
	3. 不能先创建局部变量,再用global声明为全局变量,此
   		种做法不符合规则
	4. global变量列表里的变量名不能出现在函数的形参列
   		表里

nonlocal 语句

作用:
	告诉解释器, nonlocal声明的变量不是局部变量,也不是
	全局变量,而是外部嵌套函数内的变量
语法:
	nonlocal 变量名1, 变量名2, ....


说明:
	1. nonlocal 语句只能在被嵌套函数内部进行使用
	2. 对nonlocal变量进行赋值将对外部嵌套函数作用域
   		内的变量进行操作
	3. 当有两层或两层以上函数嵌套时,访问nonlocal变量
   		只对最近的一层变量进行操作
	4. nonlocal 语句的变量列表里的变量名不能出现在此
   		函数的形参列表中
**def 语句的作用是创建函数**

lambda 表达式(又称匿名函数)

作用:
	创建一个匿名函数对象
	同def 类似,但不提供函数名
语法:
	lambda [函数形参列表]: 表达式

说明:
1. lambda 表达式创建的函数只能包含一条表达式
2. lambda 比函数简单,且可以随时创建和销毁,有利于
   降低程序的偶合度

eval函数和exec() 函数
eval(source, global=None, local=None), 把一个
 	字符串source 当成一个表达式来执行,返回表达式执
  	行后的结果
exec(source, global=None, local=None)  把一个
  	字符串source当成程序来执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值