9阅网

您现在的位置是:首页 > 知识 > 正文

知识

python - 类型提示是比断言更安全的类型检查选项吗?

admin2022-11-02知识16

我有两段代码来检查函数参数的数据类型。

第一段使用类型

def write_str(str1: str, file1_str: str):

    return None

第二种使用 assert.

def write_str(str1, file1_str):
    assert (type(str1) == str and type(file1_str) == str)

    return None 

python的类型化是否使得断言检查的使用变得没有必要?哪个代码段能更好地抓到bug?

我使用的是python v3.7



【回答】:

注释方法(第1种)在传递错误类型时不会抛出错误。

因此,第二种方法更好,但是它仍然可以改进。

def write_str(str1, file1_str):
    assert (isinstance(str1, str) and isinstance(file1_str, str))

    return None 

如果你传入一个继承自于 str. 虽然在这里不是很相关。isinstance 一般建议比 type.