小甲鱼零基础python课后题 P21 020函数:内嵌函数和闭包函数
测试题
0.如果希望在函数中修改全局变量的值,应该使用什么关键字?
答:globe
1.在嵌套函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字?
答:nonlocal
2.python的函数可以嵌套,但要注意访问的作用域问题哦,请问以下代码存在什么问题呢?
def outside():
print("I am outside")
def inside():
print("I am inside")
inside()
答:inside() 不是外部函数,不能直接调用。
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()
答:inside函数打印var的时候没有定义所以报错 。 报错内容(UnboundLocalError: local variable 'var' referenced before assignment 翻译: UnboundLocalError: 赋值之前引用的本地变量“var”)。
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课后题 P21 020函数:内嵌函数和闭包函数的更多相关文章
- 小甲鱼零基础python课后题 P22 021函数:递归是神马
0.递归在编程上的形式是如何表现的呢? 答:在编程上,递归表现为函数调用本身这么一个行为. 1.递归必须满足哪两个基本条件? 答:1函数调用自己. 2有正确的返回条件 2.思考一下,按照递归的特性,在 ...
- 小甲鱼零基础python课后题 P24 023递归:这帮小兔崽子
0.使用递归写一个十进制转换为二进制的函数(要求“取2取余”的方式,结果与调用bin()一样返回字符串式). 答: def Dec2Bin(dec): temp = [] result = '' wh ...
- 小甲鱼零基础python课后题 P22 021函数:lambda表达式
0.请使用lambda表达式将下边函数转变为匿名函数 def fun_A(x,y=3): return x*y 答: lambda x,y=3:x*y 1.请将下边的匿名函数转变为普通的屌丝函数 la ...
- 小甲鱼零基础学python第25讲课后习题动手练习--通讯录
小甲鱼零基础学python第25讲课后习题动手练习---通讯录 **************************通讯录要求******************************* 输入指令: ...
- 小甲鱼零基础入门学习python--课后作业
[小甲鱼零基础入门学习python--课后作业] 小甲鱼零基础入门学习python--课后作业 本章内容: 1.基础部分的作业 2.函数部分的作业 3.字典.集合.文件部分作业 4.异常 5.Easy ...
- 小甲鱼零基础入门PYTHON
000.愉快的开始 00:17:37 ☆ 001.我和Python的第一次亲密接触 00:13:26 ★ 002.用Python设计第一个游戏 00:24:00 ★ 003.小插曲之变量和字符 ...
- 小甲鱼零基础汇编语言学习笔记第五章之[BX]和loop指令
这一章主要介绍什么是[BX]以及loop(循环)指令怎么使用,loop和[BX]又怎么样相结合,段前缀又是什么鬼,以及如何使用段前缀. 1.[BX]的概念 [BX]和[0]类似 ...
- 小甲鱼零基础汇编语言学习笔记第二章之寄存器(CPU工作原理,CPU内部通讯)
这一章主要介绍了CPU中的重要器件——寄存器,整个系列通篇是以8086CPU作为探讨对象,其它更高级的CPU都是在此基础之上进行的升级. 1.一个典型的CPU是由运算器.控制器.寄存器等器件组成, ...
- 【雕爷学编程】零基础Python(01)---“投机取巧”的三条途径
从3月13日报名尝试上网课学习(4天课8.9元),开始接触Python(中文发音“派森”),到今天有一星期了.这两天广泛搜索了一下相关的学习途径,本着“投机取巧”的出发点,居然小有心得,这里一并分享出 ...
随机推荐
- 常见的cmake工程做法
第一步,创建一个build目录存放cmake生成的中间文件: mkdir build 第二步,进入到build文件目录: cd build 第三步,cmake把代码文件生成一个makefile文件: ...
- sql server 2008 中的 server profiler 的简单使用
server profiler 是一个SQL server的 数据库执行语句的监控工具. 登录你需要监控的数据库. 2 .设置要监控进程的PID. 3.设置监控的数据库. 4 . 最后点击运行 就可以 ...
- C#多态及接口
直接看代码吧 using System; using static System.Console; namespace ConsoleApp { //使用abstract,抽象类或方法,不能使用vir ...
- IDEA 中使用MyBatis-generator 自动生成MyBatis代码
0.在Intellij IDEA创建maven项目 1. 在maven项目的pom.xml 添加mybatis-generator-maven-plugin 插件 <build> < ...
- 【原创】大数据基础之Oozie(1)简介、源代码解析
Oozie4.3 一 简介 1 官网 http://oozie.apache.org/ Apache Oozie Workflow Scheduler for Hadoop Hadoop生态的工作流调 ...
- 【原创】大叔经验分享(22)securecrt连接自动断开
securecrt一段时间没有操作连接就会自动断开(xshell就没有这个问题),提示信息为:信号灯超时时间已到,解决方法为: Options -- Session Options -- Termin ...
- C++实验一
2-28 #include <iostream> using namespace std; int main() {char x; cout<<"Menu: A(dd ...
- php 常用的自定义函数
1. 发送 SMS 在开发 Web 或者移动应用的时候,经常会遇到需要发送 SMS 给用户,或者因为登录原因,或者是为了发送信息.下面的 PHP 代码就实现了发送 SMS 的功能. 为了使用任何的语言 ...
- flume taidir to kafkasink
flume的数据源采用taiDir,sink类型选择kafka类型 测试目标:flume监控某一个目录的日志文件,并将文件存储到kafka中,在kafka的消费端可以实现数据的消费 dip005.di ...
- 使用FLASK+winscp在服务器端发布一个表白网页
本地环境采用Windows 环境下Pycharm开发环境.