首次使用makedown进行博客书写,使用起来感觉也不难,主要是功能需要比较少,不过编写出来的文章很美观。
测试题
0.如果希望在函数中修改全局变量的值,应该使用什么关键字?
使用global关键字。使用global关键字使函数内的局部变量修改为全局变量。
>>> number = 1
>>> def fun1():
number = 3
print(number)
>>> fun1()
3
>>> print(number)
1
>>> def fun1():
global number
number = 3
print(number)
>>> fun1()
3
>>> print(number)
3
1.在嵌套的函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字?
使用nonocal关键字。
>>> def outside():
number = 4
def inside():
nonlocal number
number *= number
return number
return inside()
>>> outside()
16
2.Python的函数可以嵌套,但是注意访问的作用域问题哦,请问以下代码存在什么问题?
def outside():
print('I am outside!')
def inside():
print('I am inside!')
inside()
函数嵌套中,内部函数只能在外部函数的范围内调用,改为:
def outside():
print('I am outside!')
def inside():
print('I am inside!')
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()
因为代码B中var没有定义就使用print打印var,外层函数的var变量内层函数不能访问。
4.请问如何访问funIn()呢?
def funOut():
def funIn():
print('宾果!你成功访问到我啦')
return funIn()
直接调用funOut函数即可:
>>> funOut()
宾果!你成功访问到我啦
5.请问如何访问funIn()呢?
def funOut():
def funIn():
print('宾果!你成功访问到我啦')
return funIn
得加一个小括号:
>>> print(funOut())
<function funOut.<locals>.funIn at 0x0000021DADD9E9D8>
>>> type(funOut())
<class 'function'>
>>> funOut()()
宾果!你成功访问到我啦
我觉得funOut函数返回的funIn类似C语言中的函数名,是一个地址。
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。只要认为funX()函数返回的是funY()的地址就能理解了,a()只不过是调用funY()。