当前位置: 首页 > Python编程 > Python编程实战技能 > Python编程基础入门 > Python中的作用域是什么

Python中的作用域是什么

发布时间:2020年09月27日 09:54:30 来源: 点击量:374

【摘要】python中的作用域有4种:搜索变量的优先级顺序依次是(LEGB):作用域局部 > 外层作用域 > 当前模块中的全局 > python内置作用域。numb

python中的作用域有4种:

搜索变量的优先级顺序依次是(LEGB):

作用域局部 > 外层作用域 > 当前模块中的全局 > python内置作用域。

number = 10             # number 是全局变量,作用域在整个程序中
def test():
    print(number)
    a = 8               # a 是局部变量,作用域在 test 函数内
    print(a)
test()

运行结果:

10
8
def outer():
    o_num = 1          # enclosing
    i_num = 2          # enclosing
    def inner():
        i_num = 8      # local
        print(i_num)   # local 变量优先
        print(o_num)
    inner()
outer()

运行结果:

8
1
num = 1
def add():
    num += 1
    print(num)
add()

运行结果:

UnboundLocalError: local variable 'num' referenced before assignment

相关推荐:《Python视频教程》

如果想在函数中修改全局变量,需要在函数内部在变量前加上global关键字。

num = 1                    # global 变量
def add():
    global num             # 加上 global 关键字
    num += 1
    print(num)
add()

运行结果:

2

同理,如果希望在内层函数中修改外层的 enclosing 变量,需要加上 nonlocal 关键字

def outer():
    num = 1                  # enclosing 变量
    def inner():
        nonlocal num         # 加上 nonlocal 关键字
        num = 2
        print(num)
    inner()
    print(num)
outer()

运行结果:

2
2

另外我们需要注意的是:

1.只有模块、类、及函数才能引入新作用域;

2.对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量(这时只能查看,无法修改);

3.如果内部作用域要修改外部作用域变量的值时, 全局变量要使用 global 关键字,嵌套作用域变量要使用 nonlocal 关键字。

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部