Python函数参数类型及传参方式详解

 更新时间:2025年11月20日 16:11:29   作者:思则变  
Python函数参数主要分为位置参数、关键字参数、默认参数、可变参数和仅关键字参数,参数传递方式包括位置传递、关键字传递和默认传递,理解参数传递机制对于编写正确的函数至关重要,本文介绍Python函数参数类型及传参方式,感兴趣的朋友一起看看吧

Python函数参数类型

Python函数参数主要分为以下几种类型:

位置参数(Positional Arguments)

  • 最常见的参数类型
  • 调用时必须按定义顺序传递
  • 数量和顺序必须匹配函数定义
def foo(name,age):
    """
    位置参数,按位置对应来传递参数
    """
    print(f"第一个参数:{name},第二个参数{age}")
# test code
foo("Alice", 18)
foo(18, "Alice")
第一个参数:Alice,第二个参数18
第一个参数:18,第二个参数Alice

当传入的两个参数位置调换之后,输出结果也会调换。所以位置参数必须严格按照对应位置来传递。

关键字参数(Keyword Arguments)

  • 调用时通过参数名指定值
  • 可以不按定义顺序传递
  • 提高代码可读性
def foo(name, age):
    """
    关键字参数,根据指定的关键字传递参数,与参数的位置不相关
    :return:
    """
    print(f"第一个参数:{name},第二个参数{age}")
# test code
foo(name="Alice", age=18)
foo(age=18, name="Alice")
第一个参数:Alice,第二个参数18
第一个参数:Alice,第二个参数18

可以看到两种不同位置的传参,输出都是同一个结果。

默认参数(Default Arguments)

  • 在函数定义时指定默认值
  • 调用时可省略使用默认值的参数
  • 必须位于非默认参数之后
def foo(name="Dog", age=12):
    """
    关键字参数,根据指定的关键字传递参数,与参数的位置不相关
    :return:
    """
    print(f"第一个参数:{name},第二个参数{age}")
# test code
foo()
foo(name="Alice", age=18)
第一个参数:Dog,第二个参数12
第一个参数:Alice,第二个参数18

可变参数(Variable-length Arguments)

  • *args:接收任意数量的位置参数,接收后会被放进一个元组内,也称为非关键字参数元组
  • **kwargs:接收任意数量的关键字参数,接收后会放进一个字典内,也称为关键字参数字典,参数名为key,参数值为value。
def foo(*args, **kwargs):
    for arg in args:
        print(f"其他非关键参数有:{arg}")
    for kwarg in kwargs.keys():
        print(f"其他关键子参数有:{kwargs[kwarg]}")

多种参数(包括位置参数,默认参数,关键字参数,可变参数)

多种参数一起传递,对传递顺序是有要求的,一般是位置参数、关键字参数、默认参数、可变参数。总体来说可变参数都是放在所有参数后面的

def foo(arg1, arg2, arg3="some", *args, **kwargs):
    print(f"位置参数arg1 is {arg1}\n位置参数arg2 is {arg2}")
    print(f"默认参数arg3 is {arg3}")
    for arg in args:
        print(f"其他非关键参数有:{arg}")
    for kwarg in kwargs.keys():
        print(f"其他关键子参数有:{kwargs[kwarg]}")
# test code
# foo("Alice", 18)
# foo("Alice", 18, "Bob", "Elson", 19)
# foo("Alice", 18, "Bob", "Elson", 19, a="123", b=789)
foo("Alice", 18, "Elson",19, a="123", b=789,)
位置参数arg1 is Alice
位置参数arg2 is 18
默认参数arg3 is Elson
其他非关键参数有:19
其他关键子参数有:123
其他关键子参数有:789

仅关键字参数(Keyword-only Arguments)

  • 放在*后的参数必须使用关键字传递
def concat(*args, sep=" "):
    return sep.join(args)
print(concat("a", "b", "c", sep="-"))  # 必须使用关键字传递sep

Python参数传递方法

Python中的参数传递本质上是对象引用的传递。对于可变和不可变对象有不同的表现:

不可变对象传递

  • 数字、字符串、元组等不可变类型
  • 函数内修改会创建新对象,不影响原始变量
def modify_num(x):
    x = x + 1
    print("Inside:", x)
num = 10
modify_num(num)  # Inside: 11
print("Outside:", num)  # Outside: 10

可变对象传递

  • 列表、字典等可变类型
  • 函数内修改会影响原始对象
def modify_list(lst):
    lst.append(4)
    print("Inside:", lst)
my_list = [1, 2, 3]
modify_list(my_list)  # Inside: [1, 2, 3, 4]
print("Outside:", my_list)  # Outside: [1, 2, 3, 4]

理解Python的参数传递机制对于编写正确的函数至关重要。根据需求选择合适的参数类型和传递方式,可以使代码更清晰、更安全。

到此这篇关于Python函数参数类型以及传参方式的文章就介绍到这了,更多相关python函数参数类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python实现绘制简单动图的示例详解

    基于Python实现绘制简单动图的示例详解

    动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化,本文的主要介绍在Python中两种简单制作动图的方法,需要的可以了解下
    2023-10-10
  • Python进阶-函数默认参数(详解)

    Python进阶-函数默认参数(详解)

    下面小编就为大家带来一篇Python进阶-函数默认参数(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Python的Web服务器网关接口(WSGI 和 ASGI)

    Python的Web服务器网关接口(WSGI 和 ASGI)

    WSGI和ASGI是Python Web开发中用于Web服务器和应用程序之间通信的两个标准接口,选择哪种接口取决于应用程序的具体需求和性能要求,下面就来介绍一下如何实现
    2026-02-02
  • 在PyCharm中使用Git和Gitee进行版本控制的操作流程

    在PyCharm中使用Git和Gitee进行版本控制的操作流程

    该文章详细介绍了在PyCharm中使用Git与Gitee进行版本控制的全过程,包括环境准备、基本操作、分支管理、拉取与克隆、以及避免冲突的IDE操作等步骤,设置Git路径和Gitee插件是基础,之后可以进行项目初始化、添加、推送等,需要的朋友可以参考下
    2026-05-05
  • python中 @的含义以及基本使用方法

    python中 @的含义以及基本使用方法

    @用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰,下面这篇文章主要给大家介绍了关于python中 @ 的含义以及基本使用的相关资料,需要的朋友可以参考下
    2021-12-12
  • python os模块简单应用示例

    python os模块简单应用示例

    这篇文章主要介绍了python os模块简单应用,结合实例形式分析了Python os模块操作目录与路径相关函数与使用技巧,需要的朋友可以参考下
    2019-05-05
  • 使用Python开发智能文件备份工具

    使用Python开发智能文件备份工具

    在数字化时代,数据备份已成为个人和企业数据管理的重要环节,本文将详细介绍如何使用Python开发一款功能全面的桌面级文件备份工具,有需要的可以了解下
    2025-05-05
  • Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

    Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

    这篇文章主要介绍了Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法 ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Python描述器descriptor详解

    Python描述器descriptor详解

    这篇文章主要向我们详细介绍了Python描述器descriptor,需要的朋友可以参考下
    2015-02-02
  • Python实现将HTML转为PDF/图片/XML/XPS格式

    Python实现将HTML转为PDF/图片/XML/XPS格式

    网页内容是信息传播的主要形式之一,这篇文章主要和大家介绍了如何使用Python实现将HTML分别转为PDF/图片/XML/XPS格式等,需要的可以参考下
    2024-03-03

最新评论