1、概述
2、具体过程
举例:
def cal(a,b):
c=a+b
return c
result=cal(10,20)
print(result) #30
二、函数的参数传递
1、参数传递
实参:实际传递参数
形参:函数括号内的形式参数
举例:
def cal(a,b):
c=a+b
return c
result=cal(10,20)#位置实参 a=10,b=20
result=cal(b=20,c=10) #关键字实参传递 a=10,b=20
print(result)
2、内存分析
概述:在函数的调用过程中,进行参数的传递
如果是不可变对象,在函数体的修改不会影响到实参的值 ;如果是可变对象,在函数体的修改会影响到实参的值
举例:
#函数的定义
def fun(arg1,arg2):
print('arg1=',arg1)
print('arg2=',arg2)
arg1=100 #重新赋值为100
arg2.append(10) #追加100
print('arg1=', arg1)
print('arg2=', arg2)
print('-------------------------------')
#函数的调用
n1=11
n2=[22,33,44]
print(n1,n2) #结果:11 [22, 33, 44]
fun(n1,n2) #将位置传参,agr1,arg2是函数定义的形参,n1,n2是函数调用的实参,总结:形参和实参名称可以不一致
print(n1,n2) #结果:11 [22, 33, 44, 10]
三、函数的返回值
结论:
1、如果函数没有返回值,【函数执行完毕后,不需要给调用出提供数据】return可以省略不写
2、函数的返回值如果是1个,直接返回类型
3、函数的返回值如果是多个,返回结果是元组
1、默认参数值
小贴士:可以修改print函数的默认行为,使用end
print('hello',end='t')
print('python')
结果:
2、个数可变的位置形参与个数可变的关键字形参
结论:
1、个数可变的位置形参只能有一个,不然程序会报错
2、个数可变的关键字形参只能有一个,不然程序会报错
3、在一个函数中既有个数可变的关键字形参,又有个数可变的位置形参,要求位置形参应在关键字形参之前。即:fun(*args1,**args2)
举例1:
def fun(a,b,c):
print('a=',a)
print('b=',b)
print('c=',c)
fun(10,20,30)
print("------列表调用多个参数函数---------------------------------------")
lst=[11,22,33]
fun(*lst)
print("-------字典调用多个参数函数--------------------------------------")
dic={'a':100,'b':200,'c':30}
fun(**dic)
举例2:
在函数参数使用*后,可限定关键字参数传递
举例:
def fun():
global age
age=100
print(num)
num=100
fun()
print(age)
结果如下:
举例:斐波那契数列
def fab(n):
if n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
print(fab(6)) #8



