当前位置: 首页 > news >正文

Effective Python:(18)作用域问题


Effective Python第21条说的是如何在闭包里使用外围作用域的变量,这也是我们编程常遇到的问题。

说起来比较简单,就是如何在内层的方法中使用外层方法的变量,就是局部变量的作用域的问题熟悉C语言的知道,是不能直接用函数外的局部变量的,需要通过参数传递,或者直接做成全局变量。

但是Python有闭包的概念,可以让内层方法直接引用外层方法的变量,可以读取其值,但是给外层变量赋值,会出现情况,发现无法赋值成功,这是因为内层函数当做新定义一个变量处理了,与外层变量无关。

要解决赋值的问题,可以给内层方法里改变量声明成nonlocal,这样就是告诉Python我们要把值赋值给闭包外部的变量。当然这样写有时候会使程序难以理解,这样情况我们就可以封装一个辅助类来完成,用类的self指针直接当做引用类的成员变量。

相关文章:

  • 番外篇 - Docker的使用
  • VSCode 配置优化指南
  • 【从零开始学习计算机科学】硬件设计与FPGA原理
  • r1-reasoning-rag:一种新的 RAG 思路
  • RtlLookupAtomInAtomTable函数分析之RtlpAtomMapAtomToHandleEntry函数的作用是验证其正确性
  • 【ArcGIS】地理坐标系
  • 空间域与频域图像处理
  • 基于DeepSeek的智慧医药系统(源码+部署教程)
  • C语言单链表头插法
  • 嘉立创:电子产业革新背后的隐形巨擘
  • C语言——【全局变量和局部变量】
  • 【智能体】本地安装Conda和搭建OpenManus环境
  • 人机共创:AI与人类编剧如何携手打造电影新纪元
  • 蓝桥备赛(13)- 链表和 list(上)
  • 第五章:go 的数据类型 及go语言拼接字符串有哪些方式
  • 百度移动生态事业群聚焦UGC战略,贴吧迎新调整
  • Scala 中生成一个RDD的方法
  • OmniGraffle Pro for Mac思维导图
  • 【运维篇】KubeSphere-02(经验汇总)
  • MySQL数据实时同步至Elasticsearch的高效方案:Java实现+源码解析,一文搞定!
  • 做聊天网站的视频教程/不需要验证码的广告平台
  • wordpress 全站pjax/长沙网站seo优化排名
  • 网站开发角色分类/推广引流渠道平台
  • 阿里巴巴国内网站怎么做/网站搜索引擎优化的方法
  • 茶山网站仿做/东莞seo外包平台
  • 免费网站建设策划/国内重大新闻10条