# 1. 写函数,函数可以支持接收任意数字(位置传参)并将所有数据相加并返回。 def sum_add(*args): sum = 0 for l in args: try: sum +=l except TypeError: #捕捉异常 如果是其他类型相加会报错 直接不执行 继续循环 pass return sum s = sum_add(1,'3',2) # 2. 看代码写结果 # def func(): # return 1,2,3 # val = func() print( type(val) == tuple ) print( type(val) == list ) """ 1.返回一个元组 val=(1,2,3) 2.True 3.False """ # 3. 看代码写结果 # def func(*args,**kwargs): # pass # # a. 请将执行函数,并实现让args的值为 (1,2,3,4) # def func(*args,**kwargs): # return args # print(func(1,2,3,4)) # # b. 请将执行函数,并实现让args的值为 ([1,2,3,4],[11,22,33]) def func(*args,**kwargs): return args print(func([1,2,3,4],[11,22,33])) # # c. 请将执行函数,并实现让args的值为 ([11,22],33) 且 kwargs的值为{'k1':'v1','k2':'v2'} def func(*args,**kwargs): return args,kwargs print(func([11,22],33,k1='v1',k2='v2')) # # d. 如执行 func(*{'武沛齐','金鑫','女神'}),请问 args和kwargs的值分别是? """ args = ('武沛齐','金鑫','女神') kwargs = None {} """ def func(*args,**kwargs): return args,kwargs print(func(*{'武沛齐','金鑫','女神'})) # # e. 如执行 func({'武沛齐','金鑫','女神'},[11,22,33]),请问 args和kwargs的值分别是? """ args = ({'武沛齐','金鑫','女神'},[11,22,33]) kwargs = {} None """ def func(*args,**kwargs): return args,kwargs a,b= func({'武沛齐','金鑫','女神'},[11,22,33]) print(a) print(b) # # f. 如执行 func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'}),请问 args和kwargs的值分别是? """ args = (('武沛齐','金鑫','女神'),[[11,22,33]]) kwargs = {'k1':'栈'} """ def func(*args,**kwargs): return args,kwargs a,b = func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'}) print(a) print(b) # 4. 看代码写结果 # def func(name,age=19,email='123@qq.com'): # pass # # a. 执行 func('alex') ,判断是否可执行,如可以请问 name、age、email 的值分别是? """ 可以执行 name = 'alex' age =19 email = '123@qq.com' """ # # b. 执行 func('alex',20) ,判断是否可执行,如可以请问 name、age、email 的值分别是? """ 可以执行 name = 'alex' age =20 email = '123@qq.com' """ # # c. 执行 func('alex',20,30) ,判断是否可执行,如可以请问 name、age、email 的值分别是? """ 可以执行 name = 'alex' age =20 email = 30 """ # # d. 执行 func('alex',email='x@qq.com') ,判断是否可执行,如可以请问 name、age、email 的值分别是? """ 可以执行 name = 'alex' age =19 email = 'x@qq.com' """ # # e. 执行 func('alex',email='x@qq.com',age=99) ,判断是否可执行,如可以请问 name、age、email 的值分别是? """ 可以执行 name = 'alex' age =99 email = 'x@qq.com' """ # # f. 执行 func(name='alex',99) ,判断是否可执行,如可以请问 name、age、email 的值分别是? """ 不行,位置参数必须第一个 报错:SyntaxError: positional argument follows keyword argument """ # # g. 执行 func(name='alex',99,'111@qq.com') ,判断是否可执行,如可以请问 name、age、email 的值分别是? """ 不行,位置参数必须第一个 报错:SyntaxError: positional argument follows keyword argument """ # 5. 看代码写结果 # def func(users,name): # users.append(name) # return users # result = func(['武沛齐','李杰'],'alex') # print(result) """ result = ['武沛齐','李杰','alex'] """ # 6. 看代码写结果 # def func(v1): # return v1* 2 # def bar(arg): # return "%s 是什么玩意?" %(arg,) # val = func('你') # data = bar(val) # print(data) """ '你你 是什么玩意?' """ # 7. 看代码写结果 # def func(v1): # return v1* 2 # def bar(arg): # msg = "%s 是什么玩意?" %(arg,) # print(msg) # val = func('你') # data = bar(val) # print(data) """ '你你 是什么玩意?' None """ # 8. 看代码写结果 # v1 = '武沛齐' # def func(): # print(v1) # func() # v1 = '老男人' # func() """ '武沛齐' '老男人' """ # 9. 看代码写结果 # v1 = '武沛齐' # def func(): # v1 = '景女神' # def inner(): # print(v1) # v1 = '肖大侠' # inner() # func() # v1 = '老男人' # func() """ '肖大侠' '肖大侠' 原因: 1、函数外的v1 是全局变量,在全局作用域中 2.函数内的v1 是局部变量,在局部作用域中 3.函数内又嵌套了函数inner(),它内部定义print(v1),打印的变量的地址 是指向父级函数func中的v1,如果父级中没有此变量会继续向外调用,直到没找到报错。 4.在func函数里调用了inner()函数,在调用之前v1又重新赋值了,由'景女神'变成了肖大侠 5.在全局作用域中,经过了2次调用函数func()。结果都为'肖大侠''肖大侠' """ # 10. 看代码写结果【可选】 # def func(): # data = 2*2 # return data # new_name = func # val = new_name() # print(val) # # 注意:函数类似于变量,func代指一块代码的内存地址。 """ 4 """ # 11. 看代码写结果【可选】 # def func(): # data = 2*2 # return data # data_list = [func,func,func] # for item in data_list: # v = item() # print(v) # # 注意:函数类似于变量,func代指一块代码的内存地址。 """ 4 4 4 原因: 1.列表中 存储的都是函数func的内存地址 2.当循环开始时,依次把func内存地址又指向给了item. 3.item相当于函数func,所以它可以指向调用 并 返回值给v 4.结果循环了3次 并打印了3次4 """ # 12. 看代码写结果(函数可以做参数进行传递)【可选】 # def func(arg): # arg() # def show(): # print('show函数') # func(show) """ show函数 原因: 我们其实在func函数体中调用了函数show """