ITPub博客

首页 > 大数据 > 数据分析 > Python进阶如何修改闭包内使用的外部变量?

Python进阶如何修改闭包内使用的外部变量?

原创 数据分析 作者:金木大大大 时间:2023-12-05 13:45:09 0 删除 编辑

  在Python中,闭包是指一个函数对象,它可以访问并记住在其定义范围内的非全局变量。闭包可以在函数内部定义一个内嵌函数,并返回内嵌函数作为结果。内嵌函数可以访问外部函数的变量,即使外部函数已经执行完毕。


  当闭包内部使用外部变量时,如果想要修改这个外部变量的值,可以通过以下两种方式实现:


  使用nonlocal关键字:在闭包内部,可以通过nonlocal关键字声明一个变量,使得闭包内部的变量与外部函数的变量绑定在一起。这样,当在闭包内部修改这个变量时,会直接修改外部函数的变量。


  示例:


  def outer_func():


  x=10


  def inner_func():


  nonlocal x


  x+=1


  print(x)


  return inner_func


  closure=outer_func()


  closure()#输出11


  closure()#输出12


  在上面的示例中,inner_func是一个闭包函数,它使用了外部函数outer_func的变量x。通过在inner_func中使用nonlocal关键字声明x,可以在闭包内部修改外部函数的变量x的值。


  将外部变量封装成可变对象:如果外部变量是不可变对象(如数字、字符串、元组等),则无法直接修改其值。但可以将其封装成可变对象(如列表),然后在闭包内部修改列表中的元素。


  示例:


  def outer_func():


  x=[10]


  def inner_func():


  x[0]+=1


  print(x[0])


  return inner_func


  closure=outer_func()


  closure()#输出11


  closure()#输出12


  在上面的示例中,将外部变量x封装成了一个列表,然后在闭包内部通过修改列表的元素来修改外部变量的值。


  无论是使用nonlocal关键字还是封装成可变对象,都可以实现在闭包内部修改外部变量的值。具体选择哪种方式取决于外部变量的类型和使用场景。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70032566/viewspace-2998805/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2023-10-12

  • 博文量
    249
  • 访问量
    157742