python系列教程180——作用域注意事项
Posted 人工智能AI技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python系列教程180——作用域注意事项相关的知识,希望对你有一定的参考价值。
朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow
声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!
函数定义了本地作用域,而模块定义的是全局作用域。这两个作用域有如下的关系。
•内嵌的模块是全局作用域。每个模块都是一个全局作用域。外部的全局变量就是那个模块对象的属性,但是在拿个模块中该全局变量能够像简单的变量一样被使用。
•全局作用域的作用范围仅限于单个文件。别被这里的“全局”所迷惑,这里的全局指的是在一个文件里的变量名,仅对于这个文件内部的代码而言是全局的。在Python中是没有无所不包的全局作用域的。在Python中变量名由模块文件隔开,并且必须精确地导入一个模块文件才能够使用这个文件中定义的变量名。当你在Python中听到“全局的”,你就应该想到“模块的”。
•每次对函数的调用都创建了一个新的本地作用域。每次调用函数,都创建了一个新的本地作用域。也就是说,将会存在由那个函数创建的变量的命名空间。可以认为每一个def语句(以及lambda表达式)都定义了一个新的本地作用域。
还要注意,一个函数内部的任何类型的赋值都会把一个名称划定为本地的。如果在一个def中以任何方式赋值一个名称,它都将对于该函数成为本地的。都是要注意,原处改变对象并不会把变量划分为本地变量,实际上只有对变量名赋值才可以。例如,如果变量名L在模块的顶层被赋值为一个列表,在函数内部的像L.append(X)这样的语句并不会将L划分为本地变量,而L = X却可以。
以上是关于python系列教程180——作用域注意事项的主要内容,如果未能解决你的问题,请参考以下文章