使用python强制函数args类型

使用python强制函数args类型,python,python-3.x,arguments,Python,Python 3.x,Arguments,我想强制arg函数为str,所以我在函数args中使用了:str def func (a:str): print(a) func(int(2)) 这个代码是有效的,没有失败,为什么 def func (a:str): print(a) func(int(2)) 您使用的是如上所述的类型提示。简而言之,这只是一个指导方针,没有任何强制力。您可以使用isinstance函数检查参数是否符合您的要求,并使用raiseTypeError以其他方式检查: def func(a):

我想强制arg函数为str,所以我在函数args中使用了
:str

def func (a:str):
    print(a)
func(int(2))
这个代码是有效的,没有失败,为什么

def func (a:str):
    print(a)
func(int(2))
您使用的是如上所述的类型提示。简而言之,这只是一个指导方针,没有任何强制力。您可以使用
isinstance
函数检查参数是否符合您的要求,并使用
raise
TypeError
以其他方式检查:

def func(a):
    if not isinstance(a, str):
        raise TypeError
    print(a)
您还可以(与运行时检查一起使用,或者不使用)使用静态类型检查器,该检查器将尝试利用这些注释(以及可能从未注释的代码中推断出的内容),并检查它们是否都匹配。默认情况下,Python(有意且有意地)包含用于添加类型提示的语法,但不会执行任何类型检查:这不是Python语言本身的一部分(尽管Python的某些部分使用类型注释,如数据类)

premier类型检查器是在Python项目的保护伞下开发的,但也有各种替代方案(我不一定测试过YMMV),例如Facebook、google或microsoft,除了集成工具(如jetbrains等IDE的内置类型检查)之外,Python仍然是一种动态类型语言,因为这只是MyPy等开发工具的元数据。