这三个函数的返回类型提示有什么不同吗?
def my_func1():
print("Hello World")
return None
def my_func2():
print("Hello World")
return
def my_func3():
print("Hello World")
他们都应该有< code>-
提问的动机是这个问题,这个很好的答案,以及我正在学习类型提示的事实。
如果您的函数的签名中没有任何类型提示,则默认情况下mypy根本不会检查它们。请考虑以下事项:
< code>$ cat foo.py
def foo():
"""this function has no type hint in its signature
it won't be checked and the error will be ignored."""
"foo" + 1
return None
def bar() -> None:
"""this has type hint in the signature
it will be checked and error will be reported"""
"bar" + 1
return None
$ mypy ./foo.py
foo.py:6: error: Unsupported operand types for + ("str" and "int")
Found 1 error in 1 file (checked 1 source file)
他们都应该有-
请注意,对于实际上从不返回任何内容的函数,也存在
typing.NoReturn
类型。
from typing import NoReturn
def raise_err() -> NoReturn:
raise AssertionError("oops an error")
其他类型的函数(由@chepner指出)实际上从不返回,因此应该使用< code >进行类型提示
或者< code>my_func2
或< code>my_func3应该没有返回类型提示吗?
在我看来,它们应该总是有一个类型提示,因为正如@yedpodtrzitko在他们的回答中所说的,没有类型提示的函数在默认情况下根本不会被mypy进行类型检查,它们的返回值基本上被认为是< code>Any。这大大降低了类型检查的好处,这也是我总是对新项目使用mypy设置< code > disallow _ untyped _ defs = True 的原因之一。
问题内容: 我是PL / SQL的初学者,正在尝试一些sql脚本,但是有时我的脚本中有错误,并且没有出现提示;我仍然处于输入模式。 如何在不关闭终端的情况下检索提示? (ps:我在Ubuntu OS下为oracle 11g使用sql plus) 问题答案: 从文档中 SQL * Plus以与SQL命令相同的方式对待PL / SQL子程序,除了分号(;)或空白行不会终止并执行块之外。通过在新行上单独
问题内容: 我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。 演示版 当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。 预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。 我希望它能打印出来。而是即使错误为nil也会打印。 问题答案: 正在将err变量与nil进行比较,但实际上它是
问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:
问题内容: 我刚刚学习(正在学习)函数参数在Python中的工作方式,并且在没有明显原因的情况下开始进行实验: 给出了输出: 哪里来的?还有,这是什么? 问题答案: 它是函数的返回值,您可以将其打印出来。如果没有语句(或者只是没有参数的),则将隐式添加到函数的末尾。 您可能想返回函数中的值,而不是打印它们:
我有下面的课,我试图测试。我遇到问题的方法是,因为我试图存根/模拟行为,然后在测试中验证行为。
本文向大家介绍ASP 信息提示函数并作返回或者转向,包括了ASP 信息提示函数并作返回或者转向的使用技巧和注意事项,需要的朋友参考一下 有时候我们在写asp的时候需要给用户一些反馈信息,这个自定义的返回信息函数,很方便大家使用 具体的使用方法就不说了,很简单