码迷,mamicode.com
首页 > 编程语言 > 详细

python高阶函数

时间:2019-03-10 10:04:46      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:pre   port   带来   不能   关系   程序   直接   inner   mic   

如果你想理解LEGB的话,开始需要对Python的作用域和命名空间必须的有一定的了解,话题才能继续下去。

第一:命名空间

命名空间表示变量的可见范围,一个变量名可以定义在多个不同的命名空间,相互直接是不会冲突,但是同一个命名空间中是不可以有两个相同的变量名。比如:两个叫“张三”的学生可以同时存在于班级A和B班中,如果两个张三都是一个班级,那么带来的麻烦复杂很多了,在Python中你不能这么干。

在python中用字典来表示一个命名空间,命名空间中保存了变量(名字)和对象的映射关系,在python中命名空间出现在哪些地方呢?有函数范围内的命名空间,有模块范围内的命名空间,有python内建的命名空间,还有类对象的所有属性组成的命名空间。

第二:命名空间的生命周期

所有的命名空间都是有生命周期的,对于python内建的命名空间,python解析器启动时创建,一直保留直至python解析器推出时才消亡,而对于函数的local命名空间是在函数每次被调用的时候创建,调用完成函数返回时消亡,而对于模块的global命名空间实在该模块被import的时间创建,解析器退出时消亡。

第三:作用域

一个作用域是指一段程序的正文区域,可以是一个函数或一段代码。一个变量的作用域是指该变量的有效范围。Python的作用域是静态作用域,因为它是由代码中得位置决定的,而命名空间就是作用域的动态表现。

第四:LGB

第四:LGB

技术图片

 








# 1 ,函数名可以进行赋值

# 2, 函数名可以作为一个参数,还可以作为函数的返回值
print("------foo3----")
def foo3():
def inner():
return 8
return inner()
ret = foo3()
print(ret)

 

python高阶函数

标签:pre   port   带来   不能   关系   程序   直接   inner   mic   

原文地址:https://www.cnblogs.com/my-python-road/p/10504068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!