在python中,即使加入了类型注解,使用注解之外的类型也是不报错的 def  test ( uid:  int ) : 
	print ( uid) 
test( "999" ) 
但是我就想要类型不对就直接报错 确实可以另辟蹊径,实现报错,似乎有强类型语言那味了 只想淡淡的说一句装饰器yyds import  inspect
def  type_check ( func) : 
    def  wrapper ( * args,  ** kwargs) : 
        sig =  inspect. signature( func) 
        bound_args =  sig. bind( * args,  ** kwargs) 
        bound_args. apply_defaults( ) 
        for  name,  value in  bound_args. arguments. items( ) : 
            param =  sig. parameters[ name] 
            expected =  param. annotation
            default_value =  param. default
            if  default_value !=  inspect. Parameter. empty: 
                print ( '有默认值 => {}实际值={}' . format ( name,  value) ) 
            else : 
                print ( '无默认值 => {}' . format ( name) ) 
            
            if  expected !=  inspect. Parameter. empty: 
                
                if  default_value ==  inspect. Parameter. empty: 
                    if  not  isinstance ( value,  expected) : 
                        raise  TypeError( f"参数' { name} '应该是 { expected} 而不是 { type ( value) } " ) 
                
                if  value !=  default_value and  not  isinstance ( value,  expected) : 
                    raise  TypeError( f"参数' { name} '应该是 { expected} 而不是 { type ( value) } " ) 
        return  func( * args,  ** kwargs) 
    return  wrapper
    
@type_check 
def  demo ( n:  int ,  msg:  str ,  state:  int  =  None ) : 
    print ( '正常结束\n' ) 
demo( 1 ,  'SUCCESS' ) 
demo( 2 ,  'SUCCESS' ,  200 ) 
demo( 3 ,  'FAILED' ,  '哈哈' )   
demo( '4' ,  "FAILED" ,  '嘻嘻' )