目录
函数的参数是非常重要的
一共有4种
分别是: 位置参数,关键字参数,默认参数,可变参数(元组和字典)
下面我们开始详细说明:
1.位置参数
def sum(num1,num2):
print(num1,num2)
sum(1,2)
如图:num1对应数字1,num2对应数字2,按顺序一个一个输入,这就是位置参数。
输出结果:
2.关键字参数
我们在传递参数的时候,以形参等于实参的形式忽略顺序进行输出。
忽略顺序,在程序较多难以分辨时非常好用!
def sum(num1,num2):
print(num1,num2)
sum(num2=2,num1=1)
如上图:如果按照位置参数 输出应该是2 1
但是因为我们设定了关键字参数,所以输出结果如下:
4.可变参数
我们经常会遇到一种情况,就是如果我们需要的输入的函数特别多,那么我们需要定义的函数量会非常多
于是,就拥有了可变参数
可变参数分为两种:1.元组参数 2.字典参数
(1)元组参数:(位置参数)
通过给形参前面添加*使参数变成一个元组,所有传递的参数变成元组的元素
def func(*args):
print(args)
func(1,2,3,4)
函数定义的参数我们用*args表示,这样,我们*args变成了一个元组,囊括了所有我们输入的参数。
输出结果如下:(输出形式是以元组形式输出的)
同时,*这个符号很特别,也拥有打散序列的功能。
def func(a,b,c):
print(a,b,c)
tup=(1,2,3)#tup是元组
func(*tup)
输出结果:
为什么会这样呢?我们可以来看下
tup = (1,2,3)
print(*tup)
*打散这个元组,然后输出,我们得到的结果是:
在打散元组后,第一个赋值给a,第二个赋值给b,第三个赋值给c
然后输出。
(2)字典参数 **kwargs(关键字参数)
通过给形参前面添加**使参数变成一个字典,所有传递的参数变成字典的键值对,这里传参要求键等于值的形式。
def func(**kwargs):
print(kwargs)
print(kwargs['name'])
func(name='zs',age='10')
首先:name=‘zs’这种格式的都会转成{‘name’:'zs'}字典形式
输出结果如下:
5.定义函数时参数的顺序
位置参数,元组参数,默认参数,字典参数
def func(a,*args,b = 10,**kwargs):
print(a)
print(args)
print(b)
print(kwargs)
func(1,'ww','22',b = 23,c=40,d=50)
为什么这样呢?
因为位置参数、元组参数 比较相近,和其他两组差距明显,所以我们先来比较他们
1.位置参数只是一个,而可变参数是很多的,如果放在前面,位置参数将不会出现,因为全部被可变参数(元组参数囊括)
2.默认参数和字典参数理由同上
3.位置参数在最前面,所以最终位置形成。
6.函数嵌套
一个函数套着一个函数,记住:函数从上到下运行就不会错。
def outter():
print("aaaa")
def inner():
print('bbbbbb')
inner()
outter()
输出结果: