一,作业讲解
‘‘‘ 5、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 dic = {"k1": "v1v1", "k2": [11,22,33,44]} PS:字典中的value只能是字符串或列表8、写函数,接收两个数字参数,返回比较大的那个数字。9、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。def func8(path,old,new): passfunc8(log,alex,sb) 10、写一个函数完成三次登陆功能,再写一个函数完成注册功能(进阶) ‘‘‘#2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 # def func1(argv):# l1 = []# for i in range(len(argv)):# if i % 2 == 1:# l1.append(argv[i])# return l1# print(func1([1,2,3,4])) # def func1(argv):return argv[1::2]# print(func1([1,2,3,4]))# 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 # def func2(argv):# if len(argv) > 5:# return True# else:return False# print(func2(‘fdsafsdagfdsa‘)) # def func2(argv):# return True if len(argv) > 5 else False# print(func2(‘fdsafsdagfdsa‘)) # def func2(argv):# return len(argv) > 5# print(func2(‘1‘)) # 4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。# def func3(argv):# l1 = []# if len(argv) > 2:# l1 = argv[:2]# else:# l1 = argv# return l1# func3([1,2,3,4])## def func3(argv):# return argv[:2] if len(argv) > 2 else argv# func3([1,2,3,4])## def func3(argv):# return argv[:2]# # func3([1,2,3,4])# l1 = [1]# print(l1[:2]) # 5、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。# def func4(argv):# dic = {‘digit‘:0,‘alpha‘:0,‘space‘:0,‘other‘:0}# for i in argv:# if i.isdigit():# dic[‘digit‘] += 1# elif i.isalpha():# dic[‘alpha‘] += 1# elif i.isspace():# dic[‘space‘] += 1# else:# dic[‘other‘] += 1# return ‘数字%d,字母%d,空格%d,其他%d‘ % (dic[‘digit‘],dic[‘alpha‘],dic[‘space‘],dic[‘other‘])## print(func4(‘fdsafd [email protected]#$%^fdf123 哈佛撒旦‘))# 6、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。 # 7、写函数,检查传入字典的每一个value的长度(列表,字符串),如果大于2,# 那么仅保留前两个长度的内容,并将新内容返回给调用者。# def func6(argv):# for i in argv:# if len(argv[i]) > 2:# argv[i] = argv[i][:2]# return argv## print(func6({"k1": "vv11", "k2": [11,22,33,44]}))## def func6(argv):# for i in argv:# argv[i] = argv[i][:2]# return argv## print(func6({"k1": "vv11", "k2": [11,22,33,44]})) 二、今日大纲
01,昨日内容回顾
函数初始。
函数是封装一个功能。
def login():
函数体
return:1,结束函数。
2,#return 单个数。1;[].
return 多个值。1,2,3
login() == (1,2,3)
传参:
实参:
1,位置传参,按顺序一一对应。
def func(a,b,c):
pass
func(1,2,3)
2,关键字传参,可以不按顺序,但是必须一一对应。
def func(a,b,c):
pass
func(c=3,a=1,b=2)
3,混合传参,关键字参数在位置参数之后。
def func(a1,b1,a,b,c):
pass
func(2,5,c=3,a=1,b=2)
形参:
1,位置传参,按顺序一一对应。
def func(a,b,c):
pass
func(1,2,3)
2,默认传数,默认参数在位置参数后面。
def func(name,sex=‘男‘):
pass
func(‘李佳芮‘)
func(‘哼哼‘,‘女‘)
3,动态参数。
三元运算:
z = a if a > b else b
02,作业讲解
03,动态参数 *args **kwargs
形参角度:
最终顺序:位置参数,*args,默认参数,**kwargs
04,名称空间(命名空间),临时名称空间,内置名称空间。
全局名称空间,名称空间,命名空间,全局命名空间。
局部命名空间,临时名称空间,临时命名空间,局部名称空间,。
内置名称空间,所有的内置函数等存储的空间。
加载顺序:
内置名称空间 ---> 全局名称空间--->(函数执行时)局部名称空间。
取值顺序:
函数执行时:局部名称空间 -->全局名称空间 -->内置名称空间
05,全局作用域,局部作用域。
全局作用域:全局名称空间,内置名称空间
局部作用域:局部名称空间
06,加载顺序与取值顺序。
07,函数的嵌套。
08,locals(),golbals()
09,nonlocal,golbal。
三、动态参数
# def func(*args):# print(args)# func(1,2,3,4,5,7,8,9,1,2,3,4,5,6,7,8)#*args 动态参数,万能参数#args接受的就是实参对应的 所有位置参数,并将其放在元组中。#形参对应顺序:#位置参数,*args,默认参数# def func(a,b,c,d,*args,e=‘男‘):# print(a)# print(b)# print(c)# print(d)# print(args)# print(e)# func(1,2,3,4,5,6,7,e=‘女‘)#**kwargs 动态传参,他将所有的关键字参数(无意义的)放到一个字典中。# def func(a,b,c,**kwargs):# print(kwargs)# func(1,2,r=4,b1=5,c1=6,c=7,) # def func(a,b,c,d,*args,e=‘男‘,**kwargs):# print(a)# print(b)# print(c)# print(d)# print(args)# print(e)# print(kwargs)# func(1,2,3,4,5,6,7,v=3,m=7,h=9,e=‘女‘)# 最终顺序:位置参数,*args,默认参数,**kwargs # def func1(*args,**kwargs):# pass# func1() # * 魔法运用# def func(*args):# print(args) #(1,2,30,1,2,33.。。。。。)# l1 = [1,2,30]# l2 = [1,2,33,21,45,66]# tu = (1,2,3)# func(1,2,30,1,2,33,21,45,66)# func(*‘qweqrfdsaf‘)# func(*{‘name‘:‘alex‘,"age":12})# func(*l1,*l2)# def func(*args):# print(args)# func(1,2,3,10,20,80) # def func(**kwargs):# print(kwargs)## dic1 = {‘name1‘:‘alex‘,‘age1‘:46}# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}# func(**dic1,**dic2) # 在函数的调用执行时,# *可迭代对象,代表打散(list,tuple,str,dict(键))将元素一一添加到args。# **字典,代表打散,将所有键值对放到一个kwargs字典里。 # 在函数定义时, *args,**kwargs代表的是聚合。# def func(*args,**kwargs):# print(args)# print(kwargs)## dic1 = {‘name1‘:‘alex‘,‘age1‘:46}# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}# func(*[1,2,3,4],*‘asdfsad‘,**dic1,**dic2) def func(*args,**kwargs): #args = (1,2,3,4) #kwargs = {‘age‘: 56, ‘name‘: ‘老男孩‘} # print(*args) # print(**kwargs) #(age = 56 ,name = 老男孩)# dic1 = {‘name1‘:‘alex‘,‘age1‘:46}# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}# # func(*[1,2,3,4],*‘asdfsad‘,**dic1,**dic2)# func(**dic2) 四、名称空间、临时名称空间
# a = 4# b = 3# c = [1,2,3,4]# c1 = {‘name‘:‘alex‘}## def func1():# name = ‘老男孩‘# print(name)# func1()#当执行函数的时候,他会在内存中开辟一个临时名称空间,存放函数体内的所有变量与值的关系,# 随着函数的执行完毕,临时空间自动关闭。#input(),print(),len 内置函数 # name = ‘老男孩‘# def func1():# name = ‘taibai‘# print(name)# func1()# def my_len(argv):# return 666# print(len([12,3,]))a = 2print(a)def func1(): age = 11 print(age)func1() 五、函数的嵌套
# 函数什么时候执行? 函数调用的时候执行。# 代码从上至下依次执行, 调用函数:函数里面从上至下依次执行。# print(111)# def func1():# print(333)## def func2():# print(444)## def func3():# print(555)# func2()## func1()# print(222)# 111 333 222 # print(111)# def func1():# print(333)# func2()# print(666)## def func2():# print(444)## def func3():# print(555)## func1()# print(222)# 111 333 444 666 222 # print(111)# def func1():# print(333)# func2()# print(666)## def func2():# print(444)# func3()## def func3():# print(555)## func1()# print(222)# 111 333 444 555 666 222 # a = 2# b = 3# def func1():# c = 5# d = 6# print(globals()) # 全局变量放在一个字典中# return locals() # {‘c‘: 5, ‘d‘: 6}# print(func1()) # print(globals()) # 全局名称空间:所有变量# print(locals()) # 局部名称空间:所有变量
原文地址:https://www.cnblogs.com/zzw731862651/p/8669865.html