首页 > 编程源码 > 【三哥】Python基础系列

【三哥】Python基础系列

楼主:傻萌三哥✨ [2级] · 2019-12-14 ·  浏览2291 · 编程源码 · ID:
Python由于语言的简洁性,让我们以人类思考的方式来写代码,新手更容易上手,老鸟更爱不释手。

本次目录
Python基础 深入闭包与变量作用域
Python基础 类方法的强制重写与禁止重写
Python基础 多继承与 Mixin设计模式
Python基础 理解元组存在的意义
- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者傻萌三哥✨流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/19755.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
47条回复 |  最后回复于2019-12-14

傻萌三哥✨ [2级]

关键字:nonlocal
可以在闭包函数中,引用并使用闭包外部函数的变量(非全局的噢)
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

global好理解,这里只讲下nonlocal。
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

先来看个例子
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

def deco():
age = 10
def wrapper():
age += 1
return wrapper

deco()()
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

运行一下,会报错。
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

# UnboundLocalError: local variable 'age' referenced before assignment
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

但是这样就OK
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

def deco():
age = 10
def wrapper():
nonlocal age
age += 1
return wrapper

deco()()
# 输出:11
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

其实,你如果不使用 +=、-=等一类的操作,不加nonlocal也没有关系。这就展示了闭包的特性。
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...

傻萌三哥✨ [2级]

def deco():
age = 10
def wrapper():
print(age)
return wrapper

deco()()
# 输出:10
发布于2019-12-14

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
16人签到
已签0天
  • 46634帖子
  • 1936793热点量
  • 184968火热值