defsquare(n: int) -> int: """ 计算一个整数的平方 :param n: 输入整数 :type n: int :return: 输入整数的平方 :rtype: int :raise: ValueError """ ifnotisinstance(n, int): raise ValueError("Input must be an integer") return n * n
二、函数分析
1. 函数签名
1
defsquare(n: int) -> int:
函数名:square,直观表示函数功能
参数:n,类型注解为int,表示接受一个整数
返回类型:-> int,表示返回一个整数
2. 文档字符串
1 2 3 4 5 6 7 8 9
""" 计算一个整数的平方 :param n: 输入整数 :type n: int :return: 输入整数的平方 :rtype: int :raise: ValueError """
使用了reStructuredText格式的文档字符串
清晰说明了函数的功能、参数、返回值和可能的异常
文档与实现一致,明确声明了可能抛出ValueError
3. 函数体
1 2 3
ifnotisinstance(n, int): raise ValueError("Input must be an integer") return n * n
包含参数验证,确保输入为整数
验证失败时抛出ValueError异常
简洁直接,返回输入整数的平方
三、函数使用示例
1. 基本使用
1 2 3 4 5 6 7 8 9
# 调用square函数 result = square(5) print(result) # 输出: 25
try: result = square("5") except ValueError as e: print(f"Error: {e}") # 输出: Error: Input must be an integer
try: result = square(3.14) except ValueError as e: print(f"Error: {e}") # 输出: Error: Input must be an integer
四、函数特性
1. 类型注解
使用了Python 3.5+引入的类型注解
提高了代码的可读性和可维护性
可以使用类型检查工具(如mypy)进行静态类型检查
2. 文档字符串
使用了reStructuredText格式的文档字符串
遵循了Python的文档字符串规范
清晰说明了函数的功能、参数、返回值和异常
3. 参数验证
包含完整的参数类型验证
验证失败时抛出明确的异常信息
确保函数的健壮性
4. 简洁性
函数实现简洁明了,逻辑清晰
符合Python的设计哲学:"简单胜于复杂"
五、扩展版本
支持浮点数的版本
1 2 3 4 5 6 7 8 9 10 11 12 13
defsquare(n: float) -> float: """ 计算一个数的平方 :param n: 输入数(整数或浮点数) :type n: float :return: 输入数的平方 :rtype: float :raise: ValueError """ ifnotisinstance(n, (int, float)): raise ValueError("Input must be a number") return n * n
支持任意数字类型的版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14
defsquare(n) -> float: """ 计算一个数的平方 :param n: 输入数 :type n: int or float :return: 输入数的平方 :rtype: float :raise: ValueError """ try: return n * n except TypeError: raise ValueError("Input must be a number")