初识函数:
函数定义后,可以在需要的地方调用
没有返回值,只有单纯的打印(无return)
def my_len():
i = 0
for k in s:
i += 1
return i #返回值
返回值三种情况:
1.没有返回值:
不写return
只写return:结束一个函数的继续,后面无具体返回对象
return None (不常用)
2.返回1个值:
可以返回任意数据类型
只要返回就可以接受
如果在一个程序中有多个return,则只执行一个
3.返回多个值
用多个变量接受,返回多少值,就多少变量接受
用一个变量接受,返回一个元组
return 只有两个作用:
1,结束整个函数。
2,给函数的执行者(调用者)返回值
参数:
def my_len(s): #形参s i = 0 for k in s: i += 1 return i my_len("osd;") #实参
1.没有参数:定义参数和调用参数时括号里无内容
2.有一个参数:传什么就是什么
3.多个参数:位置参数
def my_sum(a,b): print(a,b) res = a+b #result return res ret = my_sum(1,2) print(ret)
站在实参角度:
1.按照位置传参
2.按照关键词传参
3,混着使用,必须先位置后关键词,不能同一个变量传多个值
站在形参角度:
1.位置参数:必须上传,有几个就传几个值
2.默认参数:可以不传,如果不传就是默认参数
def name(name,sex="男"): print("%s : %d"%(name,sex)) classmate('大猛') classmate('朗哥','女')
在调用函数时:按照位置传可以直接写参数的值,按照关键词:关键词 = 值
定义函数的时候:
位置参数:直接定义
默认参数:关键字参数 参数名 = ”默认的值“
动态参数:可以接受多个参数
*arge 接收按照位置传参的值,组织成一个元组
**kwargs 接收按照关键字传参的值,组织成一个字典
先后顺序:位置参数,*args,默认参数,**kwargs
# def sum(*args): # n = 0 # for i in args: # n+=i # return n # # print(sum(1,2)) # print(sum(1,2,3)) # print(sum(1,2,3,4)) # def func(**kwargs): # print(kwargs) # # func(a = 1,b = 2,c =3) # func(a = 1,b = 2) # func(a = 1)
动态参数的另一种传参方式
def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。 print(args) func(1,2,3,4,5) l = [1,2,3,4,5] func(*l) #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散