下面是Python函数参数和注解的使用攻略:
函数参数类型
位置参数
位置参数类似于命令行参数,定义函数时需要指定参数的顺序和类型。
def add(x, y):
return x + y
add(1, 2) # 输出3
默认参数
默认参数在定义函数时就已经确定了默认值,在函数调用时可以不传入对应的参数值。如果传参,则会覆盖默认值。
def greeting(name='Python'):
print(f'Hello, {name}!')
greeting() # 输出Hello, Python!
greeting('World') # 输出Hello, World!
可变参数
可变参数可以接收任意数量的位置参数,使用*
来定义。
def sum(*args):
total = 0
for arg in args:
total += arg
return total
sum(1, 2, 3, 4, 5) # 输出15
关键字参数
关键字参数可以接收任意数量的关键字参数,使用**
来定义。
def profile(name, age, **kwargs):
print(f'{name} is {age} years old')
for key, value in kwargs.items():
print(f'{key}: {value}')
profile('Tom', 30, occupation='developer', hobby='reading')
# 输出:
# Tom is 30 years old
# occupation: developer
# hobby: reading
函数注解
Python的函数注解是添加在函数参数后面的元数据,主要用于描述函数参数以及返回值的类型和含义。Python解释器会将注解作为函数属性保存下来,可以通过函数属性获得注解信息。
参数注解
参数注解用于为函数的参数添加注释,格式为参数: 注释
,多个参数注释用逗号分隔。
def greeting(name: str, age: int) -> str:
return f'{name} is {age} years old.'
print(greeting('Tom', 20)) # 输出Tom is 20 years old.
print(greeting.__annotations__) # 输出{'name': <class 'str'>, 'age': <class 'int'>, 'return': <class 'str'>}
返回值注解
返回值注解用于为函数的返回值添加注释,格式为-> 注释
。
def area(radius: float) -> float:
"""
计算圆的面积
:param radius: 圆的半径
:return: 圆的面积
"""
return 3.14 * radius ** 2
print(area(2)) # 输出12.56
print(area.__annotations__) # 输出{'radius': <class 'float'>, 'return': <class 'float'>}
示例
下面的示例结合了函数参数和注解的使用。
def user_profile(name: str, age: int, **kwargs: str):
"""
打印用户的个人资料
:param name: 用户姓名
:param age: 用户年龄
:param kwargs: 其他个人资料,如性别、职业等
"""
print(f'{name} is {age} years old')
for key, value in kwargs.items():
print(f'{key}: {value}')
user_profile('Tom', 25, gender='male', occupation='developer')
# 输出:
# Tom is 25 years old
# gender: male
# occupation: developer
def personal_info(name: str, age: int, location: str='China') -> dict:
"""
获取用户的个人信息
:param name: 用户姓名
:param age: 用户年龄
:param location: 用户所在地,不传默认值为China
:return: 用户的个人信息
"""
return {'name': name, 'age': age, 'location': location}
print(personal_info('Tom', 25))
# 输出{'name': 'Tom', 'age': 25, 'location': 'China'}
print(personal_info('Alice', 30, 'USA'))
# 输出{'name': 'Alice', 'age': 30, 'location': 'USA'}
print(personal_info.__annotations__)
# 输出{'name': <class 'str'>, 'age': <class 'int'>, 'location': <class 'str'>, 'return': <class 'dict'>}
希望本文对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python函数参数和注解的使用 - Python技术站