为何Lambda函数中使用int()未报错?与Python文档描述存疑
为什么你的Lambda用了int()却没报错?
你完全误解了Lambda注解的定义——你代码里的int()根本不是注解,就是个普通的类型转换操作,当然不会报错。
先明确Lambda注解的正确形式:
- Lambda的参数注解是给参数添加类型提示,比如
lambda x:int, y:int: x+y,这种写法才是Python禁止的,写了会直接报错。 - Lambda的返回注解是用
->指定返回类型,比如lambda x,y -> int: x+y,同样不符合Lambda语法规则,也会触发报错。
再看你的代码:
print(type((lambda x, y, z: int((x + y + z)/3))(10, 11, 12)))
这里Lambda的返回表达式是int((x + y + z)/3),int()只是把(x+y+z)/3计算出的浮点数强制转换成整数,属于正常的函数调用操作,和Lambda注解没有任何关系。
你混淆了「类型转换函数调用」和「Lambda注解」这两个完全不同的概念,你的代码里根本没有使用Lambda注解,自然不会触发Python文档中提到的“Lambda函数不能包含注解”的限制。
运行这段代码会输出<class 'int'>,也能直接证明int()确实是在做类型转换,而非注解。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

