Python笔记(八)_内部函数与闭包
内部函数
在函数内部定义另一个函数,也就是函数的嵌套
在外部函数的作用域内,外部函数可以随意调用内部函数
由于内部函数的整个定义过程都在外部函数中,所以出了外部函数就无法再被调用了
def outside():
print('外部函数被调用')
def inside():
print('内部函数被调用')
inside()
>>>outside()
外部函数被调用
内部函数被调用
>>>inside()
NameError: name 'inside' is not defined
闭包
如果在一个内部函数里引用了外部函数的变量,此时这个内部函数就被称为闭包
如果不加关键字nonlocal来声明,就会报错,闭包仅发生在嵌套函数中
def outside():
var=3
def inside():
print(var)
var=5
print(var)
inside()
>>>outside()
UnboundLocalError: local variable 'var' referenced before assignment
修改:
def outside():
var=3
def inside():
nonlocal var 使用关键字声明
print(var)
var=5
print(var)
inside()
>>>outside()
3
5
Python笔记(八)_内部函数与闭包的更多相关文章
- python 装饰器、内部函数、闭包简单理解
python内部函数.闭包共同之处在于都是以函数作为参数传递到函数,不同之处在于返回与调用有所区别. 1.python内部函数 python内部函数示例: def test(*args): def a ...
- python进阶八_警告和异常
心情有点纠结,怎么说呢,倒不是由于其它学习上的事情,反而是由于生活上狗血的剧情逼着人偏离,渐行渐远,人跟人之间有误会也是正常的,可能是由于交流不够,彼此不够了解吧,希望能尽快度过这一段纠结的日子,简单 ...
- python笔记八(切片)
一.切片 首先我们要记得在Python中可以用于切片的对象有 列表.元组.字符串. 切片操作就是直接从列表.元组或字符串中,选择出我们想要的内容,这些操作非常简洁实用. >>> L ...
- [b0022] python 归纳 (八)_多进程_基本使用
# -*- coding: UTF-8 -*- """ 测试进程使用 multiprocessing.Process 使用: 1. 准备一个函数<fun>,子 ...
- Python笔记(十七)_面向对象编程
面向对象编程 概念:简称OOP,是一种程序设计思想:OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数 面向对象的设计思想:抽象出类class,根据类class创建实例对象instan ...
- Python笔记(六)_函数
函数一般是从第一行代码开始执行,结束于return语句.异常.或者函数所有语句执行完毕.一旦函数将控制权交还给调用者,就意味着全部结束.函数中做的所有工作以及保存在局部变量中的数据都将丢失.再次调用这 ...
- Python笔记(四)_字符串的方法
字符串的方法 []表示该参数时可选的,start和end参数表示范围 count(sub[, start[, end]]) 返回sub在字符串里边出现的次数 find(sub[, start[, en ...
- guxh的python笔记八:特殊方法
1,类的特殊方法 新建一个类,本章内容中的特殊方法如果不创建类或新增方法,默认使用的就是下面的类: class Foo: """this is Foo"&q ...
- Python笔记(十一)_匿名函数与map()、filter()
匿名函数 无需显式定义函数名,和函数过程,使代码更精简的lambda表达式 函数没有命名,不用担心函数名的冲突 冒号前面代表函数的参数,后面表示计算过程 >>>func=lambda ...
随机推荐
- 移动app云测试平台
一:移动App云测试平台 1.云测试平台背景 随着智能手机的普及率和渗透率越来越高,App开发软件也越来越多.但是因为安卓和IOS的碎片化,尤其是安卓,因为完全开源的原因,导致设备繁多,品牌众多,版本 ...
- 2.maven 安装配置
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huangbin10025/article/details/24518577 System Requ ...
- MQTT DockerFile
Link: https://blog.csdn.net/russle/article/details/80469942 https://blog.csdn.net/qq_23937195/articl ...
- bzoj3097 Hash Killer I
Hash Killer I Time Limit: 5 Sec Memory Limit: 128 MBSec Special Judge Description 这天天气不错,hzhwcmhf神犇给 ...
- MapReduce的序列化机制
MapReduce自己实现了一套序列化机制,通过实现Writable接口, 重写DateInput和DateOutPut方法,实现数据的序列化和反序列化, 相比于JDK自带的序列化,MapReduce ...
- 【LeetCode】抽样 sampling(共4题)
第一部分 水塘抽样 reservoir sampling 水塘抽样的原理:(应该开一篇新文章)pssss [382]Linked List Random Node (2018年11月15日,新算法) ...
- Strings=newString(“xyz”);创建了几个 StringObject?
两个对象,一个是"xyx",一个是指向"xyx"的引用对象 s
- ElasticSearch1.7 java api
package cn.xdf.wlyy.solr.utils; import java.util.ArrayList;import java.util.HashMap;import java.util ...
- 第04章 AOP概述
第04章 AOP概述 1.AOP概述 ●AOP(Aspect-Oriented Programming,面向切面编程):是一种新的方法论,是对传统 OOP(Object-Oriented Progra ...
- DevOps打造端到端的价值交付
首先就要来说下什么是端到端: 敏捷帮助我们解决了开发域从计划到测试(部分测试内容)的问题 持续集成帮助解决了从计划到测试完成的过程 持续发布解决了从计划到待发布的过程 持续部署解决了从计划到已上线的过 ...