这2个代码段中,哪个更安全的类型检查?

问题描述 投票:0回答:1

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

第一个使用打字

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键入是否不需要使用断言检查?哪个代码段更好地捕获了错误?

我正在使用python v3.7

python python-3.x assert typing python-typing
1个回答
0
投票

注解方法(1st)在传递错误的类型时不会引发错误。

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

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

    return None 

如果传递从str继承的对象,这也将起作用。尽管在此并不真正相关,但通常建议将isinstance胜过type

© www.soinside.com 2019 - 2024. All rights reserved.