python中函数的作用域

1.局部作用域:变量定义于函数内部,其作用域仅限于函数中。

2.全局作用域:变量定义于函数外部。

3.global语句:使得函数内部可以修改全局变量的值。

x = 880
def fun():
    global x
    x = 520
    print(x)
fun()
print(x)
## 520
## 520

需要注意的是,在程序中随意的使用global语句容易使得程序有难以排查的bug,因此应当谨慎使用。

4.函数的嵌套:

不同函数可以实现嵌套使用(内部函数不可直接调用)

​
def funa():
    x=520
    def funb():
        x=1314
        print(x)
    funb()
    print(x)
funa()
## 1314
## 520

​

        nonlocal语句,使得嵌套中内部函数可以修改外部函数中变量的值:

​
def funa():
    x=520
    def funb():
        nonlocal x
        x=1314
        print(x)
    funb()
    print(x)
funa()
## 1314
## 1314

​

5.LEGB规则

    LEGB是Python中变量查找的四个作用域的缩写,当在Python中访问一个变量时,解释器会按照LEGB的顺序来查找变量,即首先在局部作用域中查找,如果找不到,则依次在外部作用域、全局作用域和内置作用域中查找。

Local(局部作用域):指的是函数内部的作用域。在函数内部定义的变量都属于局部作用域。

Enclosing(外部作用域):指的是包含函数的局部作用域,但不是全局作用域。这通常出现在嵌套函数的定义中,外部函数的作用域对于内部函数来说就是外部作用域。

Global(全局作用域):指的是模块级别的作用域。在模块顶层定义的变量都属于全局作用域,它们可以被模块中的所有函数访问。

Built-in(内置作用域):指的是Python内置的名称空间,包含了python解释器内置的名称,如print、id等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值