关于python全局变量和局部变量,以下选项描述错误,在python中,关于全局变量和局部变量

  关于python全局变量和局部变量,以下选项描述错误,在python中,关于全局变量和局部变量

  在了解全局变量和局部变量之前,我们先了解一下作用域。

  a=10

  deffunc():

  b=20

  定义者():

  c=30

  以上面的程序为例:打印a,B,c B,c。

  可以看到只有A打印10,B和C都报错。这就是范围的问题。

  我们认为一个新创建的。py文件作为一个模块,而模块中定义的变量,比如A,就是这个模块的全局变量,全局作用,任何地方都可以调用。

  但是B和C是在函数内部定义的。我们称之为局部变量,它只能在函数内部起作用。

  我们正在看一个问题。

  func和inner函数可以调用变量a吗?

  func函数可以调用变量c吗?

  答:A是全局变量,可以在任何地方调用。

  但是func函数不能调用C,这个时候我们把func看成一个整体,那么inner就是定义在func内部的函数,C就是inner内部的变量。

  总结:变量定义可以在全局任何地方调用,在函数内定义,并且只能在函数内使用。

  变量的查找顺序:LEGB

  当前模块中的局部范围外部范围全局python内置范围;

  在本文中,关于全局变量和局部变量有两种方法:全局方法和非局部方法。

  让我们直接举个例子:

  我们可以看到a是局部定义的,所以如果直接调用a,就会报错。

  只有在定义之后,调用才会被打印,全局变量的A值不会改变。

  如果我现在想改变本地命名空间中a的值,该怎么办?这就是使用全局的时候。

  我们可以看到全局变量A的值被修改为15。

  再说说外地:

  我们看到此时打印A和B时出现了错误,错误信息是B没有定义。

  但是A没有报错。这是因为A是全局变量,B是局部变量,所以出现了这个错误。更正如下:

  因为b是局部变量,所以在调用前用非局部声明,然后才能调用。

  命名空间

  名称空间分类

  全局命名空间(Global Namespace):在每个模块加载和执行时创建,记录模块中定义的变量,包括模块中定义的函数和类、其他导入的模块、模块级变量和常量。

  局部命名空间:每个函数拥有的命名空间,记录了函数中定义的所有变量,包括函数的参数和内部定义的局部变量。

  内置命名空间:可以访问任何模块,内置函数和异常(如:input、print、str、list、tuple.).

  命名空间的加载顺序

  内置命名空间(程序运行前加载)、全局命名空间(程序运行时自顶向下加载)和局部命名空间(程序运行时加载)。

  命名空间的值顺序

  本地调用:本地命名空间-全局命名空间-内置命名空间

  在全局调用中:全局名称空间-内置名称空间

  总结一下,找变量的时候,从小范围找,一层一层往大范围找。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: