Python----global和nolocal关键字的用法

简介: Python----global和nolocal关键字的用法

【原文链接】

1、global的作用

global的作用就是将变量声明为全局变量

这个问题在面试中非常常见,经常会有面试官问,如下代码打印结果是啥

var=10
def func():
    var=var+20
    print("inner:",var)

print(var)
func()
print(var)

分析:其实这段代码真正执行的时候是会报错的,提示在第三行的位置var未定义,这是因为第一行定义的var为全局变量,而在第三行中=右侧的var为局部变量,此变量在函数局部内确实未定义,这就是这段代码报错的原因,解决这个问题的方法就是在第三行代码之前,用global关键将var声明为全局变量
如下:

var=10
def func():
    global  var
    var=var+20
    print("inner:",var)

print(var)
func()
print(var)

执行结果如下:

10
inner: 30
30

这里需要记住的一个关键点是,全局变量在函数局部区域内,不能出现在赋值符号=的右侧,但是如果没有赋值符号,比如直接打印,这时又是可见的,如下:

var=10
def func():
    print("inner:",var)
print(var)
func()
print(var)

执行结果为:

10
inner: 10
10

如果在函数局部区域内对和全局变量同名的变量重新赋值时,注意此时赋值的并不是全局变量,而是一个全新的局部变量,而全局变量并未发生变化,如下:

var=10
def func():
    var=20
    print("inner:",var)

print(var)
func()
print(var)

此时执行结果为:

10
inner: 20
10

2、nonlocal的作用

  • nonlocal的作用是声明既不是全局变量,也不是局部变量
  • 如下代码,虽然使用global声明var,但是代码还是报错的,这是因为这里的var变量并不是全局变量,同时在最内层函数中也不是局部变量,在这种情况下就需要nonlocal关键字类声明
def outer():
    var=10
    def inner():
        global var
        var=var+20
        print("in inner:",var)
    print(var)
    inner()
    print(var)

outer()

如下代码:使用nonlocal声明之后,就可以正常执行了,这就是nonlocal关键字的作用

def outer():
    var=10
    def inner():
        nonlocal var
        var=var+20
        print("in inner:",var)
    print(var)
    inner()
    print(var)

outer()

执行结果如下:

10

in inner: 30

30
目录
相关文章
|
2月前
|
Python
python基本用法
【9月更文挑战第5天】python基本用法
48 7
|
1月前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
18 1
|
1月前
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
41 1
|
1月前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
33 2
|
2月前
|
Python
Python中正则表达式(re模块)用法详解
Python中正则表达式(re模块)用法详解
36 2
|
1月前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
20 0
|
2月前
|
人工智能 数据挖掘 开发者
Python用法
Python用法
29 10
|
1月前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
83 0
|
1月前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
71 0
|
1月前
|
计算机视觉 Python
Python中Pillow库的常见用法和代码示例
Pillow是Python中广泛使用的图像处理库,支持丰富的图像操作功能,包括但不限于打开、保存、缩放、裁剪、旋转、调色等。本文通过一系列示例介绍Pillow的基本用法,涵盖图像的加载与显示、尺寸调整、裁剪与旋转、亮度调整、格式转换、滤镜应用、图像合成及像素级操作等。首先需通过`pip install pillow`安装库,随后可通过导入`PIL.Image`等模块开始图像处理任务。无论是初学者还是进阶用户,都能从Pillow提供的强大功能中获益。
41 0