【python】函数的参数(实参,形参,*args和**kwargs)

一、实参和形参

实参: 函数执行的时候给函数传递的具体的值
形参: 在函数声明时编写的变量
函数执行时每个形参都要有值

# a,b为形参
def add(a, b):
    print(a + b)
# 3,4为实参    
add(3, 4)

二、实参

1.位置参数

按位置给形参传递数据

def add(a, b):
    print(a + b)
# 3,4为位置参数   
add(3, 4)

2.关键字参数

按形参的名字传递数据

def add(a, b, c):
    print(a + b - c)
# 关键字参数
add(c=10, a=5, b=4)

3.混合参数

位置参数与关键字参数,混合使用
注意顺序: 先位置参数,后关键字参数

def add(a, b, c):
    print(a + b - c)
add(10, c=5, b=4)

二、形参

1. 位置参数

def add(a, b, c):
    print(a + b - c)

2. 默认值参数

调用函数时默认值参数可以不给具体的值,直接使用默认值

# 调用函数时可以只给a,b传值,c默认为100
def add(a, b, c = 100):
    print(a + b - c)

3. 动态传参(*args和**kwargs)

*:接收任意个位置参数,自动打包成元组
**:接收任意个关键字参数,自动打包成字典
*args和**kwargs只是通常的命名习惯,也可以命名成其他的

3.1 *

def chi(*food):
    print(food)
chi("米饭", "苹果", "牛肉", "冰淇淋")
# 打印结果为:('米饭', '苹果', '牛肉', '冰淇淋')

3.2. **

def chi(**food):
    print(food)
chi(main_food="米饭", fruit="苹果", meat="牛肉")
# 打印结果为:
# {'main_food': '米饭', 'fruit': '苹果', 'meat': '牛肉'}

4. 形参的使用顺序(重要)

正确使用顺序:位置参数 > *args > 默认值参数 > **kwargs
例如:

def func(a, *args, b=10, **kwargs):
    print(a, args, b, kwargs)

三、可以接受任意参数的函数

# *args接受所有的位置参数,**kwargs接受所有的关键字参数
def func(*args, **kwargs):
    print(args)
    print(kwargs)
    
func(5, "la", 7, a=1, b=2, c="ccc")

"""
输出:
(5, 'la', 7)
{'a': 1, 'b': 2, 'c': 'ccc'}
"""

*和**的打散功能(重要)

在形参: 聚合,*把位置参数聚合成元组,**把关键字参数聚合成字典
在实参: 打散,*把可迭代对象转化成位置参数,**把字典转化成关键字参数

# 例如:列表的打散
def func(*args):
    print(args)
lst = ["a", "b", "c"]
# 一个个传递参数
func(lst[0], lst[1], lst[2])
# 打散直接传递
func(*lst)
# 例如:字典的打散
def func(**kwargs):
    print(kwargs)


dic = {"a": 1, "b": 2, "c": 3}
# 一个个传递参数
func(a=dic["a"], b=dic["b"], c=dic["c"])
# 打散直接传递
func(**dic)
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值