it编程 > 前端脚本 > Python

Python中args和kwargs用法与区别举例详解

2人参与 2025-04-26 Python

前言

大家好,今天我们来聊聊python中的两个非常强大的特性:*args**kwargs。这两个东西在函数定义中经常出现,但很多初学者对它们的理解还不够深入。今天我们就来彻底搞懂它们的用法和区别,让你在写代码时更加得心应手!

1. 什么是*args和kwargs?**

*args**kwargs是python中用于函数定义的两种特殊语法,主要用于处理可变数量的参数。它们的名字并不重要(你可以用其他名字代替),但通常约定俗成使用*args**kwargs

2. args的使用方法

*args允许你向函数传递任意数量的非关键字参数。这些参数会被打包成一个元组(tuple),在函数内部可以通过args来访问。

2.1 基本用法

def my_function(*args):
    for arg in args:
        print(arg)

my_function(1, 2, 3)

输出

1
2
3

2.2 与其他参数一起使用

*args可以和其他参数一起使用,但必须放在位置参数之后

def my_function(a, b, *args):
    print("a:", a)
    print("b:", b)
    print("args:", args)

my_function(1, 2, 3, 4, 5)

输出

a: 1
b: 2
args: (3, 4, 5)

3. kwargs的使用方法

**kwargs允许你向函数传递任意数量的关键字参数。这些参数会被打包成一个字典(dict),在函数内部可以通过kwargs来访问。

3.1 基本用法

def my_function(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

my_function(name="alice", age=25, city="beijing")

输出

name: alice
age: 25
city: beijing

3.2 与其他参数一起使用

**kwargs可以和其他参数一起使用,但必须放在位置参数和*args之后

def my_function(a, b, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)

my_function(1, 2, 3, 4, name="alice", age=25)

输出

a: 1
b: 2
args: (3, 4)
kwargs: {'name': 'alice', 'age': 25}

4. *args和kwargs的区别**

特性*args**kwargs
参数类型非关键字参数(位置参数)关键字参数(键值对参数)
打包形式打包成元组(tuple)打包成字典(dict)
使用场景处理不确定数量的位置参数处理不确定数量的关键字参数
函数调用func(1, 2, 3)func(name="alice", age=25)
函数定义def func(*args):def func(**kwargs):

5. 实际应用场景

5.1 函数装饰器

在编写装饰器时,*args**kwargs非常有用,因为它们可以处理任意数量和类型的参数。

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("before function call")
        result = func(*args, **kwargs)
        print("after function call")
        return result
    return wrapper

@my_decorator
def my_function(a, b):
    return a + b

print(my_function(1, 2))

输出

before function call
after function call
3

5.2 继承与重写

在类的继承中,*args**kwargs可以用于传递父类的参数。

class parent:
    def __init__(self, name):
        self.name = name

class child(parent):
    def __init__(self, age, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.age = age

child = child(age=10, name="alice")
print(child.name, child.age)

输出

alice 10

6. 注意事项

7. 总结

掌握*args**kwargs的使用方法,可以让你写出更加灵活和强大的python代码。

到此这篇关于python中args和kwargs用法与区别举例详解的文章就介绍到这了,更多相关python中args和kwargs用法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Pandas中的日期时间date处理小结

04-26

在win10系统上将Python从3.10降级到3.8的四种方法总结

04-26

Python中的breakpoint方法使用小结

04-26

一篇文章带你深入理解Python中的object()

04-26

Python中divmod方法使用小结

04-26

Python使用SQLAlchemy连接ClickHouse数据库

04-26

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论