python函数的多种参数使用形式

目录

[1. 位置参数(Positional Arguments)](#1. 位置参数(Positional Arguments))

[2. 关键字参数(Keyword Arguments)](#2. 关键字参数(Keyword Arguments))

[3. 默认参数(Default Arguments)](#3. 默认参数(Default Arguments))

[4. 可变参数(Variable Positional Arguments)](#4. 可变参数(Variable Positional Arguments))

[5. 关键字可变参数(Variable Keyword Arguments)](#5. 关键字可变参数(Variable Keyword Arguments))

[6. 特殊用法:传递列表或字典作为参数](#6. 特殊用法:传递列表或字典作为参数)


Python中函数的参数使用形式非常灵活,主要包括以下几种类型:位置参数、关键字参数、默认参数、可变参数和关键字可变参数。这些参数类型各有特点,适用于不同的场景。

1. 位置参数(Positional Arguments)

位置参数是最常见的参数类型,调用函数时根据函数定义的参数位置来传递参数。位置参数要求传递的参数和定义的参数的顺序以及个数必须一致。例如:

python 复制代码
 def user(name, age, gender):
     print(f"Name: {name}, Age: {age}, Genda:{gender}")
 ​
 user("Alice", 20, "Female")  # 正确
 user("Alice", 20)  # 参数数量错误
 user(25, "Alice", "Female")  # 参数顺序错误

2. 关键字参数(Keyword Arguments)

函数调用时通过"键=值"的形式传递参数,也就是通过参数名传递值,从而忽略参数顺序,让函数调用更加清晰。关键字参数还可以与位置参数混用,但是位置参数必须在关键字参数的前面,关键字参数之间不存在先后顺序。例如:

python 复制代码
 def user(name, age, genda):
     print(f"Name: {name}, Age: {age}, Genda:{gender}")
 ​
 user(name="Alice", age=25, genda="Female")  # 正确
 user(age=20, name="Alice", genda="Female")  # 正确
 user("Alice", age=20, genda="Female")  # 正确
 user(age=20, "Alice", genda="Female")  # 错误,位置参数必须在关键字参数前面

3. 默认参数(Default Arguments)

默认参数也叫缺省参数,在函数定义中为某些参数提供默认值,如果调用时未传递这些参数,则使用默认值。但是要注意所有位置参数必须要出现在默认参数前面,包括函数的定义和调用。例如:

python 复制代码
 def user(name, age, genda="Famale"):
     print(f"Name: {name}, Age: {age}, Genda:{gender}")
 ​
 user("Alice", 20)  # 使用默认性别Famale
 user("Bob", 21, "Male")  # 指定性别Male

4. 可变参数(Variable Positional Arguments)

可变参数也叫不定长参数,允许函数接受任意数量的位置参数(不传参也可以),并将其存储为元组 。传入的参数都会被 *args 变量收集,它会根据传进参数的位置合并为一个元组,这就是位置传递。

示例:

python 复制代码
 def user(*args):
     print(args)
 ​
 user("Alice")  # 传入一个参数
 user("Alice", 20)  # 传入两个参数

5. 关键字可变参数(Variable Keyword Arguments)

关键字可变参数允许函数接受任意数量的关键字参数,并将其存储为字典**kwargs 收集所有未命名的关键字额外参数。

示例:

python 复制代码
 def user(**kwargs):
     print(kwargs)
 ​
 user(name="Alice", age=20)  # 传入两对键值对参数

关键字可变参数适用于需要处理不确定数量的关键字输入的场景。

6. 特殊用法:传递列表或字典作为参数

Python允许将列表或字典直接作为参数传递给函数,这在处理集合类型的输入时非常有用。例如:

python 复制代码
 def print_list(numbers):
     for number in numbers:
         print(number)
 ​
 print_list([1, 2, 3])  # 输出:1, 2, 3
 ​
 def print_dict(data):
     for key, value in data.items():
         print(f"{key}: {value}")
 ​
 print_dict({"name": "Alice", "age": 25})  # 输出:name: Alice, age: 25
相关推荐
小龙报8 分钟前
算法通关指南:数据结构和算法篇 --- 队列相关算法题》--- 1. 【模板】队列,2. 机器翻译
c语言·开发语言·数据结构·c++·算法·学习方法·visual studio
晚秋大魔王13 分钟前
基于python的jlink单片机自动化批量烧录工具
前端·python·单片机
胖哥真不错14 分钟前
Python基于PyTorch实现多输入多输出进行CNN卷积神经网络回归预测项目实战
pytorch·python·毕业设计·课程设计·毕设·多输入多输出·cnn卷积神经网络回归预测
木木em哈哈14 分钟前
有关于cnb自动化的脚本补全
服务器·开发语言·pygame
星释16 分钟前
Rust 练习册 :Poker与扑克牌游戏
开发语言·游戏·rust
程序员-小李16 分钟前
基于PyTorch的动物识别模型训练与应用实战
人工智能·pytorch·python
晨非辰24 分钟前
【数据结构初阶】--从排序算法原理分析到代码实现操作,参透插入排序的奥秘!
c语言·开发语言·数据结构·c++·算法·面试·排序算法
Jonathan Star29 分钟前
Next.js、NestJS、Nuxt.js 是 **Node.js 生态中针对不同场景的框架**
开发语言·javascript·node.js
zhangyao9403303 小时前
关于js导入Excel时,Excel的(年/月/日)日期是五位数字的问题。以及对Excel日期存在的错误的分析和处理。
开发语言·javascript·excel
闲人编程3 小时前
Python在网络安全中的应用:编写一个简单的端口扫描器
网络·python·web安全·硬件·端口·codecapsule·扫描器