函数的初始:
def 关键字,函数名具有描述性
def my_len():
#函数体
my_len() #执行函数 函数名()
func1() : 整体是函数的执行者
函数的优点:
1.减少代码的重复性
2.增强代码的阅读性
3.函数最主要的目的:封装一个功能
函数的返回值:return
1.函数中如果遇到return,则直接结束函数
2.给函数的执行者返回值
return:只有一个return,返回的是none
return后面加单个值,这个值本身是什么数据类型,就返回什么类型
return后面加多个值,是以元祖的形式返回,所有的返回值是元祖的每一个元素
注意:工作中函数尽量不要出现print
def func1(): print(111) print(222) return print(333) priint(func1())
最后打印出111,222,而因为return的出现,函数结束,333将不会被打印
函数的参数分为两个:
实参:
位置参数:必须要一一对应
l1 = [1, 2, 3] s = 'skhdakhd' def my_len(argv): #argv形式参数 count = o for i in argv: count += 1 return count print(my_list(l1)) #3 函数的执行者实际的参数
关键字参数:可以不按照顺序,但是必须一一对应
def compare(x,y): return x if x > y else y print(compare(x = 10,y = 20))
x,y分别对应了值
def sum(x,y): return x+y a = 3 b = 6 print(sum(a,b))
以上的代码是对的,运行结果是9,但是如果写成下面的代码就是错的
def sum(x,y): return x+y print(sum(a=3,b=6))
这行代码则是把a,b定义成了关键字参数,程序如果在上面只找到了x,y找不到a,b那么,程序将会以为是多出了两个参数
混合参数:关键字参数一定要在位置参数的后面
def func1(a,b,n,x,y) return x+y name = 'alex' print(func1(100,200,name,y = 10,x = 20)
形参:
位置参数:按照顺序,一一对应
def function(x,y,z): print(x,y,z) func(1,2,3)
默认参数:给其传值,将原默认的参数覆盖掉,不传值不报错,使用默认值
应用场景:不经常改变的参数,但是一直在用
def func1(x,y,a=666): print(x,y,a) func1(1,2,) #打印出(1,2,666) func1(1,2,333) #打印出(1,2,333)
默认参数的陷阱:
默认参数若是可变的数据类型,他始终使用的是一个
def func1(x,l1 =[]): l1.append(x) return l1 ret = func1(1) print(ret,id(ret)) ret1 = func1(100) print(ret1,id(ret1)