python-函数的形参

函数的形参

  • 函数形参的四大参数

参数分为:形参(形式参数)和实参(实际参数)
形参分为:位置参数、默认参数、可变参数、关键字参数

位置参数:形参和实参个数 位置必须保持一致

最好按位置传参,如果位置不对应就指定说明

def getInfo(name,age):
    print(name,age)

getInfo('laoli',38)
getInfo(38,'laoli')			位置不对
getInfo(age=20,name='lee')	指定说明

在这里插入图片描述

def power(x,n):
    print(x ** n)
    
power(2,3)			按照位置参数依次赋给参数x,n

在这里插入图片描述

def power(x, n):
    s = x ** n
    return s

print(power(5, 3))

在这里插入图片描述
默认参数 :形参和实参可以不一致,如果没有传递值,用默认值

必选参数在前,默认参数在后
当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面

def mypow(x,n=2):		默认参数n=2
    print(x**n)

mypow(5)				用默认参数
mypow(5,3)

在这里插入图片描述
定义默认参数指向对象要为不变对象

def add_end(l=None):		变量[] and 不变对象None 的区别
    if l is None:
        l = []
    l.append('end')
    return l

print(add_end())
print(add_end())
print(add_end())

在这里插入图片描述
在这里插入图片描述
可变参数:允许传入0个或任意个参数,函数调用时组装一个元组,

*a:可变参数;a:是元组数据类型

def mysum(*a):		定义函数时把形式参数定义为可变参数 	    
     sum = 0
     for item in a:
         sum += item
     print(sum)

mysum(1,2,3,4)		

在这里插入图片描述

def mysum(a):			
    sum = 0
    for item in a:
        sum += item ** 2
    print(sum)
mysum([1,2,3,4])	a 为一个列表

在这里插入图片描述
关键字参数:允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个字典

**kwargs代表关键字参数,是一个字典,可以传递任意多个key-value

def getStuInfo(name, age, **kwargs):
    print(name, age,kwargs)

getStuInfo('westos','20',gender='male',hobbies=['coding','running'])	可以传入必选参数,也可以传入任意个关键字参数
getStuInfo('westos','18')				可以不传入关键字参数

在这里插入图片描述
关键字参数具有扩展函数的功能,比如在用户注册的功能,除了必选项,可选项就可以用关键字参数实现

命名关键字参数(限制关键字参数名字,必须传入参数名)

*是特殊分隔符,*后面的参数被视为命名关键字参数

def getStuInfo(name,age,*,city,job):	
    print(name,age,city,job)
getStuInfo('westos','20',city='Beijing',job='Engineer')

当命名关键字参数具有默认值,调用时可不传入参数

def getStuInfo(name,age,*,city='Beijing',job):
    print(name,age,city,job)
getStuInfo('westos','20',job='Engineer')

在这里插入图片描述
参数组合
调用顺序:必选参数、默认参数、可变参数/命名关键字参数和关键字参数

def f1(a, b, c=0, *args, **kw):
    print('a=', a, 'b=', b, 'c=', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
    print('a=', a, 'b=', b, 'c=', c, 'd =', d, 'kw =', kw)

函数调用时,自动感召参数位置和参数名把对应的参数传进去

f1(1, 2)
f1(1, 2, c=3)
f1(1, 2, 3, 'a', 'b')
f1(1, 2, 3, 'a', 'b',x=99)
f2(1,2,d=99,ext=None)

在这里插入图片描述
通过元组和字典调用函数

def f1(a, b, c=0, *args, **kw):
    print('a=', a, 'b=', b, 'c=', c, 'args =', args, 'kw =', kw)

args = (1, 2, 3, 4)
kw = {'d': 99, 'x': ''}
f1(*args,**kw)

在这里插入图片描述

def f2(a, b, c=0, *, d, **kw):
    print('a=', a, 'b=', b, 'c=', c, 'd =', d, 'kw =', kw)

args = (1, 2, 3)
kw = {'d': 88, 'x': ''}
f2(*args,**kw)

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值