位置: 编程技术 - 正文

浅谈python函数之作用域(python3.5)(python函数详解)

编辑:rootadmin

推荐整理分享浅谈python函数之作用域(python3.5)(python函数详解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python函数总结,python函数详解,python函数总结,python函数详解,python函数csdn,python 函数,python 函数,python函数详解,内容如对您有帮助,希望把文章链接给更多的朋友!

1 基本概念

1.1 命名空间 (namespace)

命名空间是变量名到对象的映射(name -> obj)。目前大多数的命名空间以类似于python字典的形式实现,实现形式在未来可能发生变化。命名空间举例:内置变量(内置函数abs, 内置的异常等),模块中的全局变量,函数调用时的局部变量。在某种意义上讲,对象的属性也形成一个命名空间。重要的是,不同的命名空间中的变量没有任何关联,两个不同的命名空间中可以包含相同的变量名。

命名空间有不同的创建时间和生命周期:

&#;内置变量命名空间在python解释器启动时创建,并且在解释器运行期间永远不会被删除;

&#;一个模块的命名空间在模块被导入时创建,并且到解释器退出会一直存在;

&#;函数的本地(局部)命名空间在函数调用时创建,函数退出时删除;

&#;解释器顶层执行的语句都是 __main__ 模块的组成部分,它们有自己的命名空间。

注:内置变量实际上同样是以模块的形式存在,模块名为 builtins 。

1.2 作用域 (scope)

作用域是Python程序中可以直接访问一个命名空间内变量的文本区域,可直接访问即命名空间内的变量在该文本区域内可见、可引用。

&#;本地(局部)作用域:函数或者类的内部

&#;全局作用域:整个程序的运行环境。

全局作用域中无法直接访问本地作用域中定义的变量:

本地作用域中的变量定义:

&#;在python中,变量赋值即定义。在局部作用域内被赋值的变量,除非由 global 或者 nonlocal 声明,否则全部为局部变量,函数调用时存在于函数命名空间。

&#;global var : 声明变量 var 为全局变量,它所有的引用和赋值都在模块的命名空间进行。

&#;nonlocal var : 将外层函数命名空间中的变量 var 绑定到本地作用域,使其在本地作用域可重新赋值。如果变量没有被声明为 nonlocal,这些变量在本地作用域仅可读,尝试给变量赋值则会在本地命名空间创建一个同名变量。

nonlocal声明的变量在上层函数中必须存在,否则报错:

2 示例

2.1 本地作用域中变量的搜索遵守LEGB规则

浅谈python函数之作用域(python3.5)(python函数详解)

1.L-Local(function):函数或类的命名空间,其中的变量称为本地变量

2.E-Enclosing function locals:外层函数的命名空间(例如closure),包含被声明为non-local的变量

3.G-Global(module):函数定义所在模块的命名空间,其中的变量称为全局变量

4.B-Builtin(Python):Python内置模块的名字空间

结果

2.2 闭包

闭包:在嵌套函数中,如果内层函数引用了外层函数的变量,就形成了一个闭包。

自由变量:被引用的外层函数变量,称为内层函数的自由变量。

外层函数执行完,其命名空间删除。但是因为 a 是内层函数的自由变量,所以变量 a 被保留,可以看作是 closure 函数对象的一个附加属性。

3 静态检测

3.1 本地变量

python是在编译def语句时静态检测其本地变量的。

在编译local_test函数时,python就确定了变量 a 为函数的本地变量。所以在执行 a += 1 是会直接在本地命名空间寻找变量a。

3.2 命名空间搜索链

一个函数的变量搜索路径是在它定义的时候决定的,不受它调用位置的影响。

f1定义在全局作用域中,其变量的搜索路径为:本地命名空间 --> 模块命名空间。所以最后的输出结果为‘lzl'。

4 匿名函数

Python借助lambda关键字定义匿名函数,格式如下:

lambda 参数列表: 表达式

示例

下面一段代码的输出结果是什么:

其等价形式:

以上这篇浅谈python函数之作用域(python3.5)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

Django视图之ORM数据库查询操作API的实例 查询表记录查询相关API操作:models.表名.objects.方法()BRall():查询所有结果filter(**kwargs):它包含了与所给筛选条件相匹配的对象get(**kwargs):返回与所给筛选

Python在不同目录下导入模块的实现方法 python在不同层级目录import模块的方法使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方

彻底理解Python list切片原理 关于list的insert函数list#insert(ind,value)在ind元素前面插入value首先对ind进行预处理:如果ind0,则ind+=len(a),这样一来ind就变成了正数下标预处理之后,当ind0

标签: python函数详解

本文链接地址:https://www.jiuchutong.com/biancheng/368733.html 转载请保留说明!

上一篇:HTML实现title 属性换行小技巧(html中title的作用)

下一篇:Django视图之ORM数据库查询操作API的实例(django orm left join)

  • 怎么算印花税计算器
  • 个人所得税是什么费用
  • 审计的基本流程是什么
  • 金蝶软件数量金额式怎样输入数据
  • 电汇凭证的日期为什么必须是当天
  • 如何开增值税专用发票视频
  • 退伍士兵增值税减免账务处理
  • 借款利息收入所得税
  • 所有者投入的资本属于什么科目
  • 残疾人士有哪些
  • 非同一控制下的企业合并采用成本法
  • 小企业无形资产取得的账务处理
  • 企业的房屋是否能确认为存货?为什么?(简单描述即可)
  • 摊销制造费用如何结转做会计分录呢?
  • 报表中应交税金和应交税费区别
  • 多缴纳的附加税怎么退
  • 银行退回服务费怎么写分录
  • 证券清算款是什么科目
  • 哪些罚款不能进行所得税税前扣除?
  • 小规模增值税缴纳怎么算
  • 旅游休闲用地
  • 税务核定利润的标准
  • 已抵扣进项税额转出滞纳金
  • 初级备考计划表
  • 资产负债表里的年初余额是什么意思
  • 销售收入大于纳税申报销售收入
  • 收到进项发票抵扣联怎么做分录
  • 网易打不开怎么退出游戏
  • rtc resume
  • mom.exe是什么进程
  • amr文件怎么转换为mp3
  • PHP:iconv_mime_decode_headers()的用法_iconv函数
  • 发票已开不符合收入确认条件账务处理怎么做?
  • 发财树怎么修剪枝叶视频教程
  • 售后回购方式销售商品如何确认收入
  • 结算借款的账务处理办法
  • phpinfophp漏洞利用
  • termux 安装
  • 中国石化电子发票平台官网
  • 其他权益工具投资
  • 上个月未开票本月怎么算
  • 增值税专用发票几个点
  • 销售防疫物资是什么意思
  • 业务活动表本年累计数公式是什么
  • 餐饮服务需要卫生许可证吗
  • 新版电子税务局怎么增加办税人员
  • 资金占用费的税费是多少
  • 银行存款日记账是企业的还是银行的
  • 城市维护建设税怎么算
  • 无法收回的应收账款怎么做分录
  • 工会活动购买的产品
  • 外币汇兑会计分录
  • 长期待摊费用怎么做账
  • 政府会计准则具体准则的作用
  • mysql could not be resolved: Name or service not known
  • MySQL去除重复数据
  • Linq to SQL 插入数据时的一个问题
  • 老毛桃winpe系统对注册表信息进行备份的方法
  • 安装freebsd
  • win8升win8.1
  • 如何升级mac系统到10.12
  • 无法收到steam短信代码
  • windows下打开注册表的命令是什么
  • windows 8 build 8148
  • win10恢复到win7系统
  • cocos2dx视频教程
  • 教你学python
  • python文本处理教程
  • 微信小程序开发用什么语言
  • 教学实例分析怎么写
  • Metaio in Unity3d 教学--- 四.再谈谈图片扫描之tracking配置文件
  • javascript中select下拉框的用法总结
  • 台湾所得税申报网站
  • 螺丝钉的税率
  • 个人的房产出租征收什么税
  • 税务稽查人员工作总结
  • 纳税信用b级可以贷款多少
  • 酒店访客时间是几个小时
  • 北京市地税局领导
  • 关于小规模纳税人的说法正确的有
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设