目录
1. 位置参数(Positional Arguments)
2. 关键字参数(Keyword Arguments)
3. 默认参数(Default Arguments)
4. 可变参数(Variable Positional Arguments)
5. 关键字可变参数(Variable Keyword Arguments)
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) # 使用默认性别Famaleuser("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, 3def print_dict(data):for key, value in data.items():print(f"{key}: {value}")print_dict({"name": "Alice", "age": 25}) # 输出:name: Alice, age: 25