第6次预习课-0801
函数:
好处: 复用,减少重复代码的编写。
def f():
pass

小练习:
写一个除法的函数,且需要处理,除数不能为0
1 def div(a,b): 2 if not isinstance(a,(int,float)): 3 return None 4 if not isinstance(b,(int,float)): 5 return None 6 if b!=0: 7 return a/b 8 else: 9 return None
print(div(2,3))
print(div(2,0))
print(div("a",1))
print(div(2,"b"))

当定义了函数,没有return返回值,返回值就是None

传参,少了或多了,出现的错误

练习:
写一个函数,统计一下一句话中的数字个数
I am a 19 years old boy!666!
1 s="I am a 19 years old boy!666!" 2 3 def count_digits(s): 4 count = 0 5 if not isinstance(s,str): 6 return None 7 for i in s: 8 if i in "0123456789": 9 count+=1 10 return count 11 12 print(count_digits(s))
函数的缺省值(默认值)

不允许缺省的参数值放在非缺省的前面

参数传入的参数为不可变的,对外部的变量就没有影响
–按值传,传入的不是变量对应的内存地址
参数传入的参数为可变的,对外部的变量就有影响
-按引用传,传入的是变量对应的内存地址


声明全局变量,global,可以改变外部变量的值

可变参数,要放在固定参数之后
*arg 代表元组

练习:
写一个函数,使用可变参数,计算函数所有参数之和
1 def f(*arg): 2 result = 0 3 for i in arg: 4 result += i 5 return result 6 7 print(f(1,2,3,4,5))
**kw 代表字典


*arg 表示把可变的多个非命名参数,转化为一个元组
**kw:表示把可变的多个命名参数,转化为一个字典
练习1:请使用**kw的方式,把可变的所有参数算一个乘积
练习2:同时使用*arg 和 **kw,算一下字母的长度之和,注意所有参数均使用字符串,字符串都是字母
1 def f(**kw): 2 chengji=1 3 for v in kw.values(): 4 chengji*=v 5 return chengji 6 7 print(f(a=2,b=3,c=4))
1 def f(*arg,**kw): 2 len1=0 3 len2=0 4 for i in arg: 5 len1+=len(i) 6 for j in kw.values(): 7 len2+=len(j) 8 return len1+len2 9 10 print(f("aaa","bbb",m="good",n="life"))

浙公网安备 33010602011771号