You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Python函数参数指定数据类型并在类型不匹配时报错

Python 函数严格限制参数类型的实现方法

方法1:原生Python无依赖实现

这是最直接的方案,不需要引入任何第三方库,直接在函数开头做类型校验即可:

def myFunction(string):
    # 严格匹配字符串类型,不接受str子类、int等其他类型
    if type(string) is not str:
        raise TypeError("myFunction仅接收字符串类型的参数")
    print(string + "test")
  • 调用myFunction("正常字符串"):运行正常,输出正常字符串test
  • 调用myFunction(str(1)):str(1)返回值为字符串类型,运行正常,输出1test
  • 调用myFunction(1)、myFunction(1.2)等非字符串类型参数:直接抛出TypeError

如果你允许str的子类作为参数传入,可以把判断逻辑替换为if not isinstance(string, str):,isinstance会兼容继承自str的自定义类,type()则只会匹配严格的str本身,根据你的实际需求选择即可。

方法2:基于类型注解的自动校验(适合项目批量使用场景)

如果你的项目中需要对大量函数做类型校验,不想每个函数都手写判断逻辑,可以用pydantic库提供的装饰器自动完成校验:

  1. 先安装依赖:pip install pydantic
  2. 代码示例:
from pydantic import validate_call

@validate_call
def myFunction(string: str) -> None:
    print(string + "test")

加了@validate_call装饰器后,函数会自动根据参数的类型注解做运行时校验,传入非字符串类型参数时会自动抛出校验错误。


内容的提问来源于stack exchange,提问作者Rydex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:36:02