python第十六课——外部函数and内部函数
1.外部函数&内部函数 内部函数: 定义在某个函数的内部,就是内部函数; 【注意事项】: 1).内部函数可以随意使用它外部函数中的内容 2).外部函数不能使用内部函数中的内容 3).内部函数不能直接在外界被调用(与作用域有关) 4).内部函数的执行需要依赖于外部函数 nonlocal关键字: 如果想要在内部函数中修改其外部函数中变量的值, 可以先使用nonlocal定位到某个变量,然后重新赋值即可--> 例如:nonlocal aa = 30 演示外部函数和内部函数的结构关系,
演示他们的调用执行过程
#定义外部函数outer()
def outer():
#外部函数的变量a,赋值为10
a=10
print('outer1....') #定义内部函数inner()
def inner():
'''
思考:内部函数可不可以使用外部函数的变量a?
可以的
'''
print('inner:%d' % a)
print('inner...') #定义内部函数变量b,赋值为20
b=20 #在当前的外部函数中启动内部函数
inner()
print('outer2...')
'''
思考:外部函数可不可以使用内部函数的变量b?
不可以
'''
# print(b) def inner1():
'''
思考:内部函数可不可以修改外部函数中的变量a的值为20?
可以的,使用nonlocal关键字来实现,原理和golbal一致
'''
nonlocal a
a=20
print(a)
inner1()
print('outer:%d' %a) #调用外部函数,间接也执行内部函数
outer()
内部函数不能直接在外界被调用,一定是需要在它所作用的外部函数中被调用,
执行也是要外部函数的执行 强化内部函数和外部函数的知识点:
a=100
def outer():
a=10
def inner():
a=20
print('我是inner...')
print('a=%d' % a)
def litter():
a=30
print('我是litter...')
print('a=%d' % a)
litter()
inner()
print('我是outer...')
print('a=%d' % a) #执行外部函数outer()
outer()
python第十六课——外部函数and内部函数的更多相关文章
- python五十六课——正则表达式(常用函数之findall)
		4).函数:findall(regex,string,[flags=0]): 参数: 和match.search一样理解 功能: 将所有匹配成功的子数据(子串),以列表的形式返回: 如果一个都没有匹配 ... 
- python五十六课——正则表达式(常用函数之search())
		函数:search(regex,string,[flags=0]):参数:和match一样理解功能:从头开始匹配字符串中的数据,如果头不匹配继续往后尝试匹配,直到有第一个匹配成功的子数据,立即返回一个 ... 
- python五十六课——正则表达式(常用函数之compile())
		2).compile(regex,[flags=0]):返回一个Pattern对象(认为:它内部已经封装了一套regex和flags) 可以再通过Pattern对象继续调用match函数(此时只需要传 ... 
- python五十六课——正则表达式(常用函数之match)
		函数:match(regex,string,[flags=0])参数:regex:就是正则表达式(定义了一套验证规则)string:需要被验证的字符串数据flags:模式/标志位,默认情况下(不定义) ... 
- python第二十六课——装饰器
		装饰器是闭包的一种使用场景: python中的装饰器在定义上需要传入一个函数对象, 在此函数执行之前或者之后都可以追加其它的操作, 这样做的好处是,在不改变源码(原本业务逻辑的)同时,进行功能的扩展: ... 
- python第二十二课——list函数
		演示list类型中常用的一些函数: 1.append(obj):将obj元素追加到列表的末尾 lt=['路费','佐罗','山治','乔巴','乌索普','纳米桑'] #append(): lt.ap ... 
- python第十六课——ascii码
		2.ascii码 美国设计出来的一张编码表,将涉及的字符都编号了,底层仍然还是进行二进制的运算: 记住:3个范围段 1).'0' --> 码值:48 2).'A' --> 码值:65 3) ... 
- Python爬虫十六式 - 第三式:Requests的用法
		Requests: 让 HTTP 服务人类 学习一时爽,一直学习一直爽 Hello,大家好,我是Connor,一个从无到有的技术小白.今天我们继续来说我们的 Python 爬虫,上一次我们说到了 ... 
- NeHe OpenGL教程 第四十六课:全屏反走样
		转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ... 
随机推荐
- C# 学习笔记(二) 时间格式化字符串
			1. 以下4种时间格式化符号输出的固定时间格式在各个区域设置中都应是相同的: 标准格式字符串 由 DateTimeFormatInfo.InvariantInfo 属性定义 自定义格式字符串 “O”或 ... 
- tcpcopy + tcpdump 离线回放
			简单来说,就是用tcpdump记录线上请求,用tcpcopy来重放,如下图所示: 有关 tcpdump 的命令详解请参考: http://www.cnblogs.com/ggjucheng/arc ... 
- android调试debug快捷键
			1. [Ctrl+Shift+B]:在当前行设置断点或取消设置的断点. 2. [F11]:调试最后一次执行的程序. 3. [Ctrl+F11]:运行最后一次执行的程序. 4. ... 
- vue-video监听touch事件
			vue-video是基于 Vue 的简洁 HTML5 视频播放器组件,但是并没有监听touch事件,也就是说在移动端按键无效. 本文讲述如何改写其vue组件,使其兼容移动端.只需要在其原有的mouse ... 
- Debian Gun/linux基本用法
			添加软件源:vim /etc/apt/sources.list 在文本中添加如下内容:deb http://mirrors.163.com/debian/ stretch main non-free ... 
- redux、immutablejs和mobx性能对比(一)
			一.前言 关于react的性能优化,有很多方面可以去做,而其中避免重复渲染又是比较重要的一点,那么为什么react会重复渲染,我们又该如何避免重复渲染呢,关于这方面官方其实早有说明:避免重复渲染,这里 ... 
- div+css模拟select下拉框
			<!DOCTYPE html><html ><head lang="zh"> <meta http-equiv="Content ... 
- 一:JavaWeb和Tomcat的安装
			1.Java Web 是java技术用来解决相关web互联网领域的技术总和. 2.Servlet是Java Servlet的简称,称为小服务程序或服务器连接器,用Java编写的服务器端程序 3.JSP ... 
- Android ListView左滑删除、左滑自定义功能
			最近项目需要ListView左滑删除功能,搜集了很多资料发现了一个某一前辈写的库能很简单的实现这个功能,而且有源码,直接拿来使用了. 库名字叫做SwipeMenuListView,下面给大家演示一下使 ... 
- redis 管道技术 pipeline 简介
			redis数据库的主要瓶颈是网络速度,其次是内存与cpu.在应用允许的情况下,优先使用pipeline批量操作.pipeline批量发出请求/一次性获取响应:不是发出多个请求,每个请求都阻塞等待响应, ... 
