优草派 > Python

详解Python函数作用域的LEGB顺序

李明         优草派

Python作为一种强大的编程语言,其函数作用域是其核心概念之一。在Python中,函数作用域有着一定的规则,即LEGB规则。LEGB是指Local、Enclosing、Global、Built-in四个作用域,这个规则非常重要,对于Python程序员来说,必须要了解它。一、Local作用域

Local作用域是函数内部定义的变量,只能在函数内部使用,函数外部不可见。如果函数内部和外部有相同的变量名,则函数内部的变量会覆盖函数外部的变量。

详解Python函数作用域的LEGB顺序

例如:

```

x = 10

def my_func():

x = 5

print("x in my_func:", x)

my_func()

print("x outside my_func:", x)

```

输出结果为:

```

x in my_func: 5

x outside my_func: 10

```

在my_func函数内部,我们定义了一个名为x的变量,它的值为5,这个变量只能在函数内部使用,函数外部不可见。在函数外部,我们定义了另一个名为x的变量,它的值为10,这个变量只能在函数外部使用,函数内部不可见。

二、Enclosing作用域

Enclosing作用域是指在函数内部嵌套函数的情况下,内部函数可以访问外部函数的变量。

例如:

```

def outer_func():

x = 5

def inner_func():

print("x in inner_func:", x)

inner_func()

outer_func()

```

输出结果为:

```

x in inner_func: 5

```

在outer_func函数内部,我们定义了一个名为x的变量,它的值为5,在inner_func函数内部,我们可以访问到这个变量。

三、Global作用域

Global作用域是指在函数外部定义的变量,可以在函数内部使用。如果函数内部和外部有相同的变量名,则函数内部的变量会覆盖函数外部的变量。

例如:

```

x = 10

def my_func():

print("x in my_func:", x)

my_func()

```

输出结果为:

```

x in my_func: 10

```

在my_func函数内部,我们没有定义名为x的变量,但我们可以访问到函数外部定义的x变量。

四、Built-in作用域

Built-in作用域是指Python内置的函数或模块中定义的变量和函数,例如print()、len()等函数。Built-in作用域的变量和函数可以在任何地方使用。

例如:

```

print("Hello, world!")

```

输出结果为:

```

Hello, world!

```

在这个例子中,我们使用了print()函数,它是Python内置的函数,我们可以在任何地方使用它。

综上所述,Python的函数作用域有四种,即Local、Enclosing、Global、Built-in四个作用域,它们的访问顺序遵循LEGB规则,即优先访问Local作用域,然后是Enclosing作用域、Global作用域和Built-in作用域。

文章

  • 微信好友

  • 朋友圈

  • 新浪微博

  • QQ空间

  • 复制链接

取消
5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024