百万年薪python之路 -- day10作业 -- 函数的动态参数
作者:互联网
1.继续整理函数相关知识点。
2.写函数,接收n个数字,求这些参数数字的和。(动态传参)
def func(*args,**kwargs):
num_sum = 0
num_dic = []
num = args
num_dic = list(kwargs.values())
for i in num:
num_sum += i
for j in num_dic:
num_sum += j
return num_sum
res = func(1,2,3,4,5,6,a=1,b=5,c=4)
print(res)
3.读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a=10
b=20
def test5(a,b):
print(a,b)
c = test5(b,a)
print(c)
20 10 #因为test5的形参传过来的a = 20,b = 10
None # test5因为没有return,所以返回None
4.读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a=10
b=20
def test5(a,b):
a=3
b=5
print(a,b)
c = test5(b,a)
print(c)
3 5 #因为在test5中a和b属于局部变量,分别被赋值3和5
None # test5因为没有return,所以返回None
5.传入函数中多个列表和字典,如何将每个列表的每个元素依次添加到函数的动态参数args里面?如何将每个字典的所有键值对依次添加到kwargs里面?
def func(*args,**kwargs):
print(args,kwargs)
tu = (1,2,3,4,5,6)
dic = {"k1":1,"k2":2,"k3":3}
func(*tu,**dic)
6.下面代码成立么?如果不成立为什么报错?怎么解决?
6.1
a = 2
def wrapper():
print(a)
wrapper()
结果:
2
6.2
a = 2
def wrapper():
a += 1
print(a)
wrapper()
结果:
报错 因为wrapper函数里没有a这个变量,所以无法自增 在wrapper函数里设置global a
6.3
def wrapper():
a = 1
def inner():
print(a)
inner()
wrapper()
结果:
1
6.4
def wrapper():
a = 1
def inner():
a += 1
print(a)
inner()
wrapper()
7.写函数,接收两个列表,将列表长度比较小的列表返回.
def func(lst1,lst2):
return lst1 if len(lst1) < len(lst2) else lst2
print(func([1,2,3,4,5],[6,7,8]))
8.写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’ _’相连接,形成新的字符串,并返回.
例如 传入的可迭代对象为[1,'老男孩','宝元']返回的结果为’1 _老男孩 _宝元’
def func(s):
lst = []
for i in s:
lst.append(str(i))
return "_".join(lst)
print(func((1,'老男孩','宝元')))
9.有如下函数:
def wrapper():
def inner():
print(666)
wrapper()
你可以任意添加代码,执行inner函数.
def wrapper():
def inner():
print(666)
return inner()
wrapper()
10.补充代码,可以使以下的代码可以运行
a = 10
def func():
a += 1
print(a)
func()
a = 10
def func():
global a
a += 1
print(a)
func()
标签:test5,python,wrapper,num,年薪,func,print,day10,def 来源: https://www.cnblogs.com/zhangchaoyin/p/11203943.html