迭代器 递归 格式化 练习

第一题:

def func1():

print('in func1') #直接输出 in func1

def func2():

print('in func2') # 输出 in func2

ret = func1

ret() #func1() 第一次调用

ret1 = func2

ret1() #func2() 第二次调用

ret2 = ret

ret3 = ret2

ret2() #func1 可以被多次调用 第三次调用

ret3() #func1 可以被多次调用 第四次调用

输出结果:

n func1

in func2

in func1

in func1

第二题

def func1():

print('in func1') #打印 in func1

def func2():

print('in func2') #打印 in func2 2

def func3(x, y):

x() #func2

print('in func3') # 打印 in func3 3

y() #func1

print(111) #输出 111 1

func3(func2, func1) #调用 func3 函数 #这里添加一步 如果有 print 的话就返回 None 这样子 func3 只是储存起来

print(222) # 222 5

# 答案

111

in func2

in func3

in func1

222

第三题

def func1():

print('in func1') #输出 in func1 2 #输出 in func1 5

def func2(x): # x 是 func1

print('in func2') #输出 in func2 1 #输出 in func2 4

return x

def func3(y): #y 是 func2

print('in func3') #输出 in func3 3

return y

ret = func2(func1) #调用 func2

ret() # 调用func1

ret2 = func3(func2) #调用 func3 ret2 是 func2

ret3 = ret2(func1) #再次调用 func2

ret3() #再次调用 func1

输出结果

in func2

in func1

in func3

in func2

in func1

第四题

def func(arg): #arg = msg

return arg.replace('苍老师', '') # Alex 的女朋友和大家都是好朋友

def run():

msg = "Alex的女朋友苍老师和大家都是好朋友"

result = func(msg) #调用 func 函数

print(result) # Alex 的女朋友***和大家都是好朋友 1

run() #调用 run函数

data = run() # Alex 的女朋友***和大家都是好朋友 2 又调用了一次

print(data)

              #       None

第五题

data_list = []

def func(arg): #arg = '绕不死你'

return data_list.insert(0, arg) #没有东西接收它 所以下面返回的是 None

data = func('绕不死你') #调用 func 函数

print(data) # None #这里稍微有些不太明白 要问

print(data_list) #['绕不死你']

第六题

def func():

print('你好呀') # 你好呀

return '好你妹呀'

func_list = [func, func, func]

for item in func_list:

val = item() #调用三次 func

print(val) # 好你妹呀 重复三次

你好呀

好你妹呀

你好呀

好你妹呀

你好呀

好你妹呀

第七题

def func():

print('你好呀')

return '好你妹呀'

func_list = [func, func, func]

for i in range(len(func_list)): 长度为三 这里要理解

val = func_listi

print(val) # 和第六题相似

你好呀

好你妹呀

你好呀

好你妹呀

你好呀

好你妹呀

第八题

def func():

return '大烧饼'

def bar():

return '吃煎饼'

def base(a1, a2): #a1 = func a2 = bar

return a1() + a2()

result = base(func, bar)

print(result) #大烧饼吃煎饼 就是一次又一次的调用

第九题:

for item in range(10):

print(item)

print(item)

#0

1

2

3

4

5

6

7

8

9

9

第十题

def func():

for item in range(10):

pass #占个位

print(item) #最后输出 9

func()

11 题

item = '老男孩'

def func():

item = 'alex'

def inner():

print(item)

for item in range(10): #它比上面先执行 所以 items 是 9

pass

inner()

func()

9

12 题

l1 = []

def func(args):

l1.append(args)

return l1

print(func(1)) # [1]

print(func(2)) #[1,2]

print(func(3)) #[1,2,3]

13 题

name = '宝元'

def func():

global name

name = '男神' #这里被赋值了

print(name) # 宝元 1

func()

print(name) #男神 2

宝元

男神

14 题

name = '宝元'

def func():

print(name)

func()

宝元

15 题

name = '宝元'

def func():

print(name)

name = 'alex' #局部不能修改全局 报错

func()

16 题

def func():

count = 1

def inner():

nonlocal count

count += 1

print(count) # 2

print(count) # 1

inner()

print(count) # 2 局部变量变了就变了

func()

17 题

def extendList(val,list=[]):

list.append(val)

return list

list1 = extendList(10)

list2 = extendList(123,[])

list3 = extendList('a')

print('list1=%s'%list1)

print('list2=%s'%list2)

print('list3=%s'%list3)

list1=[10, 'a']

list2=[123]

list3=[10, 'a']

18 题

def extendList(val,list=[]):

list.append(val)

return list

print('list1=%s'% extendList(10))

print('list2=%s'% extendList(123,[]))

print('list3=%s'% extendList('a'))

上一篇:python notice8 函数名应用和闭包


下一篇:redis sentinel无法启动问题