参数分为:必选参数、默认参数[缺省参数]、可选参数、关键字参数
1.必选参数
def sum(a,b): a、b称为形式参数(形参),只是意义上的一种参数,定义时不占用内存地址的
sun = a + b
print(sum)
sum(20,15) 20和15称为实际参数(实参),实实在在的参数,占用内存地址的。
sum() 报错,因为a b 为必选参数,不写就报错
2.默认参数(缺省参数)
def sum1(a=20,b=30):
print(f'默认参数的使用={a+b}')
sum1() 可以运行,输出结果为50,没赋值默认为a=20 b=30
sum1(10) 输出 40, a=10 b=30
sum1(10,20) 输出 30 ,a=10 b=20
3.可变参数(*args)
参数个数不确定时使用,比较灵活。接受的是一个元组数据类型。
def getComputer(*args):
'''
计算累加和
:param args:可变长的参数类型
:return:
'''
print(args)
getComputer(1,2,3,4,4,5)
输出结果 :(1,2,3,4,4,5)
输入多长都行。
4.关键字可变参数(**kwargs)
在函数体内,参数关键字是一个字典类型 ,key是一个字符串。自己理解的是,**kwargs接受的是一个可选的字典类型。
def keyFunc(*args,**kwargs):
print(args)
print(kwargs)
keyFunc(1,2,3,2,1,age=34)
输出结果:
(1,2,3,2,1)
{'age' = 34}
注意:定义函数时,*args必须在前,**kwargs必须在后。
5.函数返回值
函数执行完,会返回一个对象,如果在函数的内部,有return,就会返回实际值,否则将返回none。在一个函数体内可以出现多个return,但是肯定只能返回一次。如果在函数体内执行了一次return,意味着函数就退出了,return后面的代码就不再执行。
类型:可以返回任意类型,返回值类型应该取决于return后面的类型。
用途:给调用方返回数据。
自析:
定义母鸡下蛋
def hen(crop,water): 喂进去粮食
egg = digest(crop,water) 消化谷物和水
return egg 下蛋了
调用母鸡下蛋
hen(苞米,水)
好运行完了,蛋呢?没了。
把下的蛋print出来看看:
print(hen(苞米,水))
把下的蛋找个筐子(变量)接着
basket = hen(苞米,水)
6.函数嵌套调用
就比较简单,前面定义一个函数,后面定义的函数里面接着用,依旧以母鸡下蛋为例:
定义母鸡消化产蛋过程
def digest(food,drink):
一系列消化过程
return product
定义母鸡下蛋
def hen(crop,water): 喂进去粮食
egg = digest(crop,water) 调用了消化产蛋过程,消化谷物和水
return egg 下蛋了
调用母鸡下蛋
hen(苞米,水)
好运行完了,蛋呢?没了。
把下的蛋print出来看看:
print(hen(苞米,水))
把下的蛋找个筐子(变量)接着
basket = hen(苞米,水)