在excel中怎样进行加减乘除运算?excel加减乘除-英雄云拓展知识分享
119
2023-11-07
【摘要】 本书摘自《Python学习笔记 从入门到实战》一书中第9章,第3节,由张学建编著。
9.3 命名空间:存储变量与值对应关系的字典
9.3.1 命名空间的本质
在 Python 程序中,通常会存在如下三个可用的命名空间。
(1)每个函数都有自己的命名空间,这被称为局部命名空间,它记录了函数的变量, 包括函数的参数和局部定义的变量。
(2)每个模块拥有自己的命名空间,这被称为全局命名空间,它记录了模块的变量, 包括函数、类、其他导入的模块、模块级的变量和常量。
(3)还有就是内置命名空间,任何模块均可访问它,它存放着内置的函数和异常。 要想理解 Python 语言的命名空间,首先需要掌握如下所示的三条规则。
(1)赋值(包括显式赋值和隐式赋值)产生标识符,赋值的地点决定标识符所处的命 名空间。
(2)函数定义(包括 def 和 lambda) 产生新的命名空间。
(3)Python 搜索一个标识符的顺序是 “LEGB” 。 所谓的 “LEGB”, 是 指 Python 语 言 中4层命名空间的英文名字首字母的缩写,具体说明如下所示。
● 最里面的1层是L(local), 表示在一个函数定义中,而且在这个函数里面没有再包含函数的定义。
● 第2层E(enclosing function), 表示在一个函数定义中,但这个函数里面还包含有函数的定义,其实L 层 和E 层只是相对的。
● 第3层G(global), 是指一个模块的命名空间,也就是说在一个.py文件中定义的标识符,但不在一个函数中。
● 第4层B(builtin),是指Python解释器启动时就已经具有的命名空间,之所以叫 builtin是因为在Python解释器启动时会自动载入_builtin_ 模块,这个模块中的list 、str 等内置函数处于B 层的命名空间中。
注意:在Python程序中,可以通过模块来管理复杂的程序,而将不同功能的函数分布在 不同的模块中,函数及其全局命名空间决定了函数中引用全局变量的值。函数的全局命名空 间始终是定义该函数的模块,而不是调用该函数的命名空间。因此,在函数中引用的全局变 量始终是定义该函数模块中的全局变量。
例如在下面的实例代码中,演示了函数与其全局命名空间关系的过程。
实例9-8:函数与其全局命名空间
源码路径:下载包\daima\9\9-8
实例文件 testpy 是一个测试文件,调用了模块mo 中的方法moo_fiun( 。 在此文件中也定 义了全局变量 name 和函数 barO), 并在函数 bar) 中输出了全局变量 name 的值。然后分别调用 本模块中定义的函数barO 和 从mo 模块中导入的函数moo_fum(, 最后还定义一个把函数作为 参数传入并调用的函数 call_moo_fun() 。 因为函数中引用的全局变量始终是定义该函数模块中 的全局变量,所以第一次调用输出了当前模块中的全局变量name 的值;而第二次调用从mo 模块中导入的函数moo_fun(), 输出的则是在mo 模块中的全局变量 name 的值。第三次调用 call_moo_finO函数,并把从mo模块中导入的函数moo_fumO作为参数传入其中进行调用, 即使是在函数内部被调用,它仍然输出函数moo_fun() 模块中全局变量 name 的值。实例文件 test.py 的具体实现代码如下所示。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~