python中函数的作用域_Python中的函数作用域
在python中,一个函数就是一个作用域
name = 'xiaoyafei'
def change_name():
name = '肖亚飞'
print('在change_name里的name:',name)
change_name() # 调用函数
print("在外面的name:",name)
运行结果如下:
在change_name里的name: 肖亚飞
在外面的name: xiaoyafei
我们再试一下在嵌套函数中是如何的寻找的?
age = 15
def func():
print('第一层age:',age) # 第一层age: 15
def func2():
age = 73
print("func2中的age:",age) # func2中的age: 73
def func3():
age = 84
print("func3中的age:",age) # func3中的age: 84
func3() # 调用func3函数
func2() # 调用func2函数
func()
在以上嵌套函数中,就能够很好的说明一个函数就是一个作用域,那么我们现在稍微改一下代码看看情况?
age = 15
def func():
print('第一层age:',age) # 第一层age: 15
def func2():
print("func2中的age:",age) # func2中的age: 15 # 看到没有,如果当前作用域里没有age变量,那么它就会往上找
def func3():
age = 84
print("func3中的age:",age) # func3中的age: 84
func3() # 调用func3函数
func2() # 调用func2函数
func()
那么,这时候有人就说了,屁话一大堆讲的原来是局部变量和全局变量,那么我想问:在上面这个嵌套函数中,func2中并没有age变量,那么它是如何找到全局变量age = 15的?
此时我们就需要来看一下作用域的查找顺序了:
变量作用域LEGB
L:locals 函数内的名称空间,包括局部变量和实参
E:enclosing 外部嵌套函数的名称空间,即相邻的上一层,打个比方说:func2中没有age变量则会去func里找这个
G:globals 全局变量
B:builtins 内置模块的名称空间
咳咳,还是先了解下什么是名称空间把?
名称空间,又名 name space ,顾名思义就是存放名字的地方,存什么名字呢?举例说明,x = 1 ,1存放在内存当中,那么变量名x存放在哪里呢? 名称空间就是存放名字x与1绑定关系的地方
>>> x = 1
>>> id(1)
1576430608
名称空间分为以下3种:
locals: 是函数内的名称空间,包括局部变量和形参
globals: 全局变量,函数定义所在模块的名字空间
builtins: 内置模块的名字空间
不同变量的作用域不同就是有这个变量所在的命名空间决定的.
作用域即范围
全局范围:全局存活,全局有效
局部范围:临时存货,局部有效
让我们来举例看一下
level = 'L0'
n = 22
def func():
level = 'L1'
n = 33
print(locals()) # {'n': 33, 'level': 'L1'} 在之前说过在python中,一个函数就是一个作用域,这就很完美的体现了
def outer():
n = 44
level = 'L2'
print(locals(),n) # {'level': 'L2', 'n': 44} 44
def inner():
level = 'L3'
print(locals(),n) # {'level': 'L3', 'n': 44} 44
inner()
outer()
func()
以 L --> E --> G -->B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置函数中找。
总结
以上所述是小编给大家介绍的python中的函数作用域,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
时间: 2018-05-07
python中函数的作用域_Python中的函数作用域相关推荐
- python中函数作用域_Python中的函数作用域
在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...
- python函数中变量的作用域_Python中变量的作用域(variable scope)
此文目的 此文主要讨论和总结一下,Python中的变量的作用域(variable scope). 目的在于,通过代码,图解,文字描述,使得更加透彻的了解,Python中的变量的作用域: 以避免,在写代 ...
- python内置函数用来返回数值型序列中所有元素之和_Python内置函数______用来返回数值型序列中所有元素之和...
[填空题]表达式 int(4**0.5) 的值为 [判断题]3+4j不是合法的Python表达式. [填空题]已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为 [填 ...
- python中的方法和函数的区别_python中函数与方法的区别?
Python中函数不是方法,主要有以下区别: 首先,从分类的角度来分析二者的区别 (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函数:自己调用自 ...
- python函数返回值_Python中函数的返回值示例浅析
前言: 前面我们介绍了简单的介绍了函数和函数的参数,今天我们来说一下Python中函数的返回值. 函数的返回值:函数运算的结果,需要进一步的操作时,给一个返回值return用来返回函数的结果,如果没有 ...
- python内置作用域_python中的作用域
python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的: G:glo ...
- python代码解释4个作用域_Python中作用域的深入讲解
前言 作用域是指变量的生效范围,例如本地变量.全局变量描述的就是不同的生效范围. python的变量作用域的规则非常简单,可以说是所有语言中最直观.最容易理解的作用域. 在开始介绍作用域之前,先抛一个 ...
- python内置函数可以返回序列中的最大元素_Python内置函数__用来返回序列中的最小元素...
[判断题]不可以在同一台计算机上安装多个Python版本. [判断题]Python是一种跨平台.开源.免费的高级动态编程语言. [填空题]假设列表对象aList的值为[3, 4, 5, 6, 7, 9 ...
- python匿名函数的作用_Python中的匿名函数及递归思想简析
匿名函数 前言 上次咱们基本说了一下函数的定义及简单使用,Python中的基本函数及其常用用法简析,现在咱们整点进阶一些的.同样都是小白,咱也不知道实际需要不,但是对于函数的执行顺序以及装饰器的理解还 ...
最新文章
- springboot动态数据源切换(多数据源配置)
- kernel并发控制:自旋锁、互斥体、中断屏蔽
- jzoj5363-[NOIP2017提高A组模拟9.14]生命之树【启发式合并,Trie】
- 苹果wifi网速慢怎么办_所以,WiFi和4G到底哪个更耗电?
- linux磁盘fio压力测试,fio进行磁盘压力测试
- 信息学奥赛一本通(1206:放苹果)
- 生成用于ASP.NET Web API的TypeScript客户端API
- 还原二叉树--根据后序中序输出先序
- 嵌入式Linux编程--我的第一次艰难跋涉
- 阿里云实现首个云上量子加密通讯服务
- 【数字信号去噪】基于matlab小波变换地震波去噪【含Matlab源码 1954期】
- 1191 家谱树(拓扑排序)
- 魔兽世界用宏显示服务器时间,网上找的宏用后不能显示冷却时间为什么啊法师 – 手机爱问...
- 微信小程序使用scss,gulp
- 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。
- java 微秒 时间_Java中时间的计算 年月日小时分钟秒毫秒微秒
- 方案详解|AARRR+八角行为分析=用游戏化思维实现用户增长
- 把踢毽子的寒冷过程和心理描写出来
- Mathematica求解方程——Solve、Reduce、NSolve等函数
- cmd无法识别pip命令的问题(Python)
热门文章
- 小米云能同步到华为手机上吗_有没有小米还没涉足的产业?对标百度网盘,小米云盘即将上线...
- R语言使用aov函数进行单因素协方差分析(One-way ANCOVA)、单因素协方差分析(ANCOVA)扩展了单因素方差分析,包括一个或多个协变量(covariates)
- R语言ggplot2可视化、不同分组使用不同的色彩、同一分组(group)的线条使用相同的色彩但是配置使用不同的线型(line type)
- Error in apply(df$var1, 2, mean) : dim(X) must have a positive length
- R语言使用lm构建线性回归模型、并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型预测中系统误差的一个例子 、自定义函数计算R方指标和均方根误差RMSE
- R语言使用ggplot2包的快速可视化函数qplot绘制分组散点图(添加平滑曲线与标准差带)实战
- python使用imbalanced-learn的SMOTEENN方法同时进行上采样和下采样处理数据不平衡问题
- python代码实现二叉树的分层打印
- 便携式不锈钢管道焊接机器人_304不锈钢管居然可以发黑!?
- python 字典 转 pandas DataFrame