Python函数的参数顺序

简介: Python函数的参数顺序

学习python有点生疏,常言道,温故而知新。


一句话表示参数从左至右的依次顺序:位置形参  默认形参   *args   命名关键字参数  **kwargs


由于命名关键字参数的应用场景很少没所以没有示例。


但是我们很少会将上述的顺序全部使用到,所以这里所列了几种常见的函数搭配的顺序。


01 位置形参与默认形参混用 ==> 位置形参在左,默认形参在右

def tell(a, b, c, d=1, e=2, f=3):
    """这里面, a、b、c时位置形参, d、e、f是默认形参, 它们各自的内部都是调换顺序的.
    譬如位置形参也可以写成b, a, c等等(但是它们都一定位于任一一个默认形参的左侧),
    同理默认实参内部也是可以随意调换顺序的(这取决于你的需要), 但是也一定位于任意一个
    位置形参的左侧。既不能出现d=1, a, b, c, e=2, f=3这种默认形参在左而位置形参在右侧
    的情况。
    """
    print('位置形参:', a, b, c)
    print('默认形参', d, e, f)
tell('位置实参a', '位置实参b', '位置实参c', e=222)
"""注意, 调用函数传参时也需要注意顺序, 位置传参必须在关键字传参的左侧或者说前面"""

输出展示:

另外多说一下, 默认形参的值在函数定义阶段就被赋值了,准确一点说应该是被赋予了值的内存地址。(推荐默认参数的值应该是不可变类型)


01 可变长度的位置形参*args 和可变长度的关键字形参**kwargs的混用 ==> *args在左, **kwargs在右

这种参数我使用比较多的都是二者结合使用,并且我比较多用于装饰器。

def tell(*args, **kwargs):
    """args用于接收溢出的位置实参, (元组形式)
    kwargs用于接收溢出的关键字实参, (字典形式)"""
    print('可变长度的位置形参:', args)
    print('可变长度的关键字形参:', kwargs)
tell(1, 2, 3, '你好', '再见', name='hour', age=19, girlfriend=None)


输出展示:

03 位置形参-默认形参-可变长度的位置形参和关键字形参


顺序即上面所写的从左至右顺序一样。

def tell(a1, a2, b1='me', b2='you', *args, **kwargs):
    """
    上述a1、a2均为位置形参,必须要在默认形参的前面。
    b1
    """
    print('位置形参:', a1, a2)
    print('默认形参:', b1, b2)
    print('可变长度的位置形参:', args)  # 用于接收多出来的位置实参
    print('可变长度的关键字形参:', kwargs)  # 用于接收多出来的关键字实参
tell('位置实参a1', '位置实参a2', '默认实参b1', '默认实参b2', '可变长度的位置形参1', '可变长度的位置形参2', '可变长度的位置形参3'
     , name='hour', age=19)
"""这里也有需要说明的, 进行传参时位置传参需要在关键字传参的前面, 不可以出现  <b1='默认实参1','无关键字实参3'>这种相反的情况
否则报错"""


输出展示:


如果需要加上命名关键字形参,那么其应该位于*args,**kwargs之间,而且*不需要添加,因为前面的*args中已经出现过*了。


至于其他的形参组合顺序类似的可以推出,总之按从左至右的顺序为:


位置形参  默认形参   *args   命名关键字参数  **kwargs

目录
相关文章
|
2月前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
91 0
|
27天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
127 67
|
21天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
45 18
|
13天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
43 8
|
22天前
|
Python
Python中的函数
Python中的函数
36 8
|
29天前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
1月前
|
Python
Python中的`range`函数与负增长
在Python中,`range`函数用于生成整数序列,支持正向和负向增长。本文详细介绍了如何使用`range`生成负增长的整数序列,并提供了多个实际应用示例,如反向遍历列表、生成倒计时和计算递减等差数列的和。通过这些示例,读者可以更好地掌握`range`函数的使用方法。
53 5
|
2月前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
2月前
|
存储 数据安全/隐私保护 索引
|
1月前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。