函数
系统函数:内主函数,模块中的类
自定义函数:根据需要自定义的功能
格式:def 函数名(形参):
调用:函数名(实参)
def sum(*args):
total=0
for i in args:
total+=i
return total
print(f'{sum(1,6,-1,-3)}')
*args
和 **kwargs
是 Python 中用于函数定义的特殊语法,它们用于接受可变数量的参数,方便实现函数的灵活性和扩展性。
*args
- 作用:接收任意数量的位置参数,并将其存储为一个元组。
- 用法:
*
表示接收多个参数。- 参数名称通常为
args
,但也可以是其他合法的变量名。
示例 1:基本用法
def my_function(*args):
print(args)
my_function(1, 2, 3, "hello")
# 输出:(1, 2, 3, 'hello')
示例 2:遍历 *args
def print_numbers(*args):
for num in args:
print(num)
print_numbers(10, 20, 30)
# 输出:
# 10
# 20
# 30
示例 3:结合其他参数
def greet(greeting, *names):
for name in names:
print(f"{greeting}, {name}!")
greet("Hello", "Alice", "Bob", "Charlie")
# 输出:
# Hello, Alice!
# Hello, Bob!
# Hello, Charlie!
**kwargs
- 作用:接收任意数量的关键字参数,并将其存储为一个字典。
- 用法:
**
表示接收多个键值对参数。- 参数名称通常为
kwargs
,但也可以是其他合法的变量名。
示例 1:基本用法
def my_function(**kwargs):
print(kwargs)
my_function(name="Alice", age=25, job="Engineer")
# 输出:{'name': 'Alice', 'age': 25, 'job': 'Engineer'}
示例 2:遍历 **kwargs
def display_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
display_info(name="Alice", age=25, job="Engineer")
# 输出:
# name: Alice
# age: 25
# job: Engineer
示例 3:结合其他参数
def introduce(person, **details):
print(f"Introducing {person}:")
for key, value in details.items():
print(f"{key.capitalize()}: {value}")
introduce("Alice", age=25, job="Engineer", hobby="Reading")
# 输出:
# Introducing Alice:
# Age: 25
# Job: Engineer
# Hobby: Reading
*args
和 **kwargs
的组合使用
- 可以同时在函数中使用
*args
和**kwargs
,顺序为:普通参数 >*args
>**kwargs
。
示例:
def combined_function(greeting, *args, **kwargs):
print(f"{greeting}!")
print("Positional arguments:", args)
print("Keyword arguments:", kwargs)
combined_function("Hello", "Alice", "Bob", age=25, city="New York")
# 输出:
# Hello!
# Positional arguments: ('Alice', 'Bob')
# Keyword arguments: {'age': 25, 'city': 'New York'}
解包(Unpacking)操作
*
和 **
也可以用于函数调用时,解包参数。
示例 1:解包列表或元组
def add(a, b, c):
return a + b + c
numbers = [1, 2, 3]
print(add(*numbers)) # 输出:6
示例 2:解包字典
def describe_person(name, age, job):
print(f"{name} is {age} years old and works as a {job}.")
person = {"name": "Alice", "age": 25, "job": "Engineer"}
describe_person(**person)
# 输出:Alice is 25 years old and works as a Engineer.
总结
*args
:用于接收任意数量的位置参数,结果是一个元组。**kwargs
:用于接收任意数量的关键字参数,结果是一个字典。- 可以同时使用,支持动态和灵活的函数参数传递
关键字参数
Python 中的一种函数参数传递方式,允许通过参数名直接为函数参数赋值,而不是按照参数的位置顺序。这样可以让代码更加清晰易读,同时也避免了参数顺序导致的错误。
关键字参数的特点
-
以“参数名=值”的形式传递: 调用函数时,明确指定参数名称及其对应的值,避免混淆。
-
顺序可以随意: 因为参数是通过名称匹配的,调用时参数的顺序不再重要。
-
可以与位置参数混用: 但是,关键字参数必须在位置参数之后。
-
默认值支持: 函数定义时可以为关键字参数设置默认值,调用时如果未传递该参数,则使用默认值。
关键字参数示例
# 定义函数,带默认值的关键字参数
def greet(name, age=18, city='Beijing'):
print(f"Hello, {name}! You are {age} years old and live in {city}.")
# 调用函数时使用关键字参数
greet(name="Alice", city="Shanghai", age=25)
# 输出:Hello, Alice! You are 25 years old and live in Shanghai.
# 使用位置参数和关键字参数混合
greet("Bob", city="Guangzhou")
# 输出:Hello, Bob! You are 18 years old and live in Guangzhou.
# 只使用位置参数(使用默认值)
greet("Charlie")
# 输出:Hello, Charlie! You are 18 years old and live in Beijing.
可变数量的关键字参数(**kwargs
)
如果函数需要接受不确定数量的关键字参数,可以使用 **kwargs
,它会将多余的关键字参数以字典形式接收。
def describe_person(name, **kwargs):
print(f"Name: {name}")
for key, value in kwargs.items():
print(f"{key.capitalize()}: {value}")
# 调用函数时传递多个关键字参数
describe_person("Diana", age=30, city="New York", profession="Engineer")
# 输出:
# Name: Diana
# Age: 30
# City: New York
# Profession: Engineer
标签:其五,name,python,args,Alice,自用,kwargs,print,参数
From: https://blog.csdn.net/Der_ek__/article/details/144008666