定义在函数内部的变量称为局部变量(函数的形参也是局部变量)
局部变量只能在函数使用
局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁
全局变量:
定义在函数外部,模块内部的变量称为全局变量
全局变量,所有的函数都可以直接访问(但函数内部不能将其直接赋值)
局部变量说明:
1.在函数内首次对变量赋值是创建局部变量,再次为变量赋值是修改
局部变量的绑定关系
2.在函数内部的赋值语句不会对全局变量造成影响
3.局部变量只能在其被声明的函数内部访问,而全局变量可以在
整个模块范围内访问
globals和locals函数
globals()返回当前全局作用域内变量的字典
locals()返回当前局部作用域内变量的字典
python作用域
作用域也叫名字空间,是访问变量时,查找变量名的范围空间
局部作用域 Local function L
外部嵌套函数作用域 Encloing function Locals E
函数定义所在模块(文件)的作用域 Global(Module) G 全局
python内置模块的作用域 Builtin(python) B
global语句
作用:
1.告诉解释器,global语句声明的一个或多个变量,这些变量的作用域为模块级
的作用域,也称作全局变量
2.全局声明 (global)将赋值变量映射秷模块文件内部的作用域
语法
global变量1,变量2...
global说明
1.全局变量如果在函数内部被赋值,则必须经过全局声明(否则会被认为是局部变量)
2.全局变量在函数内部不经过声明就可以直接访问
3.不能先声明局部的变量,再用global声明为全局变量,此做法不符合规则
4.global变量列表里的变量不能出现在此作用域内的形参列表里
nonlocal 语句
作用:
告诉解释器,nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套
函数内的变量
语法:
nonlocal变量名1,变量名2,...
示例见
10_nonlocal.py
nonlocal 说明
1.nonlocal语句只能在被嵌套函数内部进行使用
2.访问nonloal变量将对外部嵌套函数的作用域的变量进行操作
3.当有两层或两层以上的函数嵌套时,访问nonlocal变量只对近一层的变量进行操作
4.nonlocal语句的变量列表里的变量名,不能出现在此函数的参数列表中
lambda表达式(又称匿名函数)
作用:
创建一个匿名函数对象
同def类似,但不提供函数名
语法 :
lambda[参数1,参数2,..]:表达式
[]里的内容可以省略
示例:
def myadd(x,y):
return x + y