小甲鱼Python第十九讲课后习题
笔记:
测试题
2.Python的函数可以嵌套,但要注意访问的作用域问题哦,请问以下代码存在什么问题呢?
def outside():
print('I am outside!')
def inside():
print('I am inside!')
inside() inside()是内部函数,不能在外部调用
使用嵌套函数要注意一点就是作用域问题,inside()函数是内嵌在outside()函数中的,所以inside()是人妻,除了身为老公的outside()可以碰(调用),在外边或者别的函数体里是无法对其进行调用的。 3. 请问为什么代码A没有报错,但代码B却报错了?应该如何修改?
代码A:
def outside():
var = 5
def inside():
var = 3
print(var)
inside()
outside()
代码B:
def outside():
var = 5
def inside():
print(var)
var = 3
inside()
outside()
def outside():
var = 5
def inside():
nonlocal var
print(var)
var = 8
inside()
outside()
4. 请问如何访问funIn()呢?
def funOut():
def funIn():
print('宾果!你成功访问到我啦!')
return funIn() funOut() 5. 请问如何访问funIn()呢?
def funOut():
def funIn():
print('宾果!你成功访问到我啦!')
return funIn
funOut()() 6. 以下是“闭包”的一个例子,请你目测下会打印什么内容?
def funX():
x = 5
def funY():
nonlocal x
x += 1
return x
return funY
a = funX()
print(a())
print(a())
print(a()) 6
7
8
有些鱼油可能会比较疑惑,这……怎么跟全局变量一样了?局部变量x不是应该在每次调用的时候都重新初始化了吗?! 其实大家仔细看看就明白了,当a = funX()的时候,只要a变量没有被重新赋值,funX()就没有被释放,也就是说局部变量x就没有被重新初始化。
所以当全局变量不适用的时候,可以考虑使用闭包更稳定和安全,你还可以参考 -> 游戏中的角色移动:闭包在实际开发中的作用
小甲鱼Python第十九讲课后习题的更多相关文章
- 小甲鱼Python第十六讲课后习题--017函数
函数的定义用def,函数名后要用冒号 函数的返回:函数中使用return 测试题: 0. 你有听说过DRY吗? DRY是指Don't Repeat Yourself ,特指在程序设计以及计算中避免 ...
- 小甲鱼Python第十八讲课后习题
笔记: 1.函数与过程:过程(procedure)是简单的,特殊且没有返回值的:函数(Function)有返回值 Python严格来说只有函数没有过程 2.局部变量:在局部生效如在函数中定义的变量 3 ...
- 小甲鱼Python第二十二讲课后习题
笔记: 斐波那契数列的两种实现方式: 迭代的方式: 自己写的: def fab(n): n1 =1 n2 =1 n3 =1 if n < 1: return -1 if n ==1: ret ...
- 小甲鱼Python第十二讲课后习题---013元组
0. 请用一句话描述什么是列表?再用一句话描述什么是元组? 列表:一个大仓库,你可以随时往里边添加和删除任何东西. 元组:封闭的列表,一旦定义,就不可改变(不能添加.删除或修改). 1. 什么情况下 ...
- 小甲鱼python视频第九讲(课后习题)
1.列表里可以存放什么东西? 可以存放任何的数据类型, list1 = ['我爱你','i love you',1314] print(list1) 2.向列表中添加元素 append(将参数作为一个 ...
- 小甲鱼Python第二十讲课后习题---021
笔记: 1.lambda表达式的作用: 1)Python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后 ...
- 小甲鱼Python第十讲课后题---
0. 下边的列表分片操作会打印什么内容? >>> list1 = [1, 3, 2, 9, 7, 8]>>> list1[2:5] [2,9,7] 1.请问 lis ...
- 小甲鱼Python第十四课后习题
字符串格式化符号含义 符 号 说 明 %c 格式化字符及其ASCII码[>>> '%c' %97 'a'] %s ...
- 视觉slam十四讲课后习题ch3-7
题目回顾: 设有小萝卜一号和小萝卜二号位于世界坐标系中,小萝卜一号的位姿为:q1=[0.35,0.2,0.3,0.1],t2=[0.3,0.1,0.1]^T (q的第一项为实部.请你把q归一化后在进行 ...
随机推荐
- linux中的find命令常用场景
1.find file.txt 在当前目录下,查找file.txt是否存在 2.find . -name file.txt 在当前目录下,递归查找file.txt文件 ...
- CMDB资产管理系统开发【day26】:linux客户端开发
客户端疑难点及获取流程 1.linux客户端支持2就可以,python3就是很麻烦 难道你要求所有的客户端都上pytho3吗? 现在从bin的入口进去 HouseStark.ArgvHandler(s ...
- Fiddler--AutoResponder
AutoResponder支持创建规则,可以在响应请求时自动触发,常见例子是返回之前捕捉的响应,而不需要访问服务器. 通俗点讲,就是它能在不访问服务器的情况下,使发送的请求得到自己设置的响应. 下图是 ...
- 第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)
一. 时间的类型 1. 背景 这里为什么要介绍时间类型呢,明明是定时调度篇,原因是在定时任务中,任务什么时间开始执行,什么时间结束执行,要用到各种各样的时间模式,虽然这不能算是一个复杂的问题,但在正式 ...
- SSH框架之hibernate《二》
Hibernate第二天 一.hibernate的持久化类和对象标识符 1.1持久化类的编写规范 1.1.1什么是持久化类: ...
- nginx禁止ip登录,只允许域名访问
公司要求,线上solr.kibana要求只能通过域名进行访问,禁止用ip+端口进行登录访问,那么,下面介绍下我是如何实现的 1.禁止ip,允许域名访问 如下图,默认安装好nginx,不让ip方式访问, ...
- JavaScript的数据类型和变量
1. 数据类型:JS使用弱类型,共4种基本类型,其数据可以是变量,也可以是常量. a) 数值(整数和实数) b) 字符串型(用“”号或‘’括起来的字符或数值) c) ...
- 用Navicat连接阿里云ECS服务器上的MySQL数据库
今天用navtive连接阿里云服务器(Linux)的数据库时,老是连接不上,并且报10060错误,要通过以下两个步骤解决: 1.先进入linux连接数据库并输入密码: mysql -uroot -p ...
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week4 特殊应用:人力脸识别和神经风格转换
一.什么是人脸识别 老实说这一节中的人脸识别技术的演示的确很牛bi,但是演技好尴尬,233333 啥是人脸识别就不用介绍了,下面笔记会介绍如何实现人脸识别. 二.One-shot(一次)学习 假设我们 ...
- Django目录
app和ORM的操作与介绍 框架简介 中间件 form介绍 Django自带用户认证 cookie和session 模版 模板2 ORM操作 所有ORM操作(第二版) Django请求生命周期 Dja ...