[具身智能-337]:python函数定义中的数据类型说明

张开发
2026/4/11 4:28:40 15 分钟阅读

分享文章

[具身智能-337]:python函数定义中的数据类型说明
在 Python 中关于“数据类型说明”其实包含两个层面的含义怎么写如何在代码中通过语法类型提示来标注类型。怎么传Python 函数实际上是如何接收和处理不同类型数据的动态特性。结合刚才我们聊到的- str我为你详细拆解一下 Python 函数定义中的数据类型说明。1. 语法层面类型提示这是 Python 3.5 引入的特性用来给代码加“注释”告诉大家这个函数期望接收什么类型以及承诺返回什么类型。基本语法结构pythondef 函数名(参数名: 数据类型) - 返回值类型: ...常见类型标注示例表格数据类型标注写法示例代码整数intdef add(x: int, y: int) - int:浮点数floatdef calc(area: float) - float:字符串strdef greet(name: str) - str:布尔值booldef is_valid(flag: bool) - bool:列表list或List[int]def process(items: list[int]) - list:字典dict或Dict[str, int]def get_user(info: dict) - int:无返回值Nonedef print_log(msg: str) - None:注意对于列表和字典为了更精确通常会从typing模块导入例如List[int]表示“里面装的是整数的列表”。但在 Python 3.9 版本中可以直接用小写的list[int]。2. 运行机制动态类型的真相这是 Python 最特殊的地方。虽然你写了类型提示但 Python 解释器在运行时通常会“无视”它。强类型、动态语言Python 是动态类型的这意味着你定义函数时不需要也无法强制锁死数据类型。实际效果即使你写了def add(a: int) - int:如果你传给它一个字符串add(hello)只要代码逻辑不报错程序依然能运行或者在运行时报错而不是在定义时报错。示例说明pythondef add(a: int, b: int) - int: return a b # 1. 正常调用符合提示 print(add(1, 2)) # 输出 3 # 2. 违规调用不符合提示但 Python 允许运行 # 如果你传入字符串Python 会尝试执行 hello world # 虽然类型提示说是 int但实际运行结果是 helloworld print(add(hello, world))3. 为什么要写类型提示既然不强制为什么现在的 Python 代码包括你看到的- str都流行写类型说明呢给人看可读性别人或未来的你看代码时一眼就知道该传什么参数不需要去读函数内部的逻辑。给工具看IDE 智能提示当你使用 PyCharm 或 VS Code 时如果你传错了类型比如该传int你传了str编辑器会画波浪线警告你防止低级错误。静态检查Mypy可以使用第三方工具如mypy在代码运行前扫描代码。如果类型不匹配工具会直接报错阻止代码上线。4. 进阶复杂数据的类型说明当处理列表、字典或多种类型混合时需要使用typing模块。列表List[int]全是整数的列表字典Dict[str, float]键是字符串值是浮点数的字典联合类型Union[int, str]可以是整数也可以是字符串可选类型Optional[str]可以是字符串也可以是None代码示例pythonfrom typing import List, Dict, Union # 接收一个整数列表返回一个字符串 def process_users(user_ids: List[int]) - str: return f处理了 {len(user_ids)} 个用户 # 接收一个字典键是字符串值是整数 def save_data(data: Dict[str, int]) - None: print(保存数据...) # 接收整数或字符串 def print_id(id_val: Union[int, str]) - None: print(id_val)总结Python 函数中的数据类型说明如name: str和- int是一种“君子协定”。它不强制约束代码运行但能极大地提升代码的可读性和开发效率

更多文章