如何正确地使用注释函数 - 参数

时间:2016-09-03 20:38:18

标签: python python-3.x types typing

我希望我的函数被注释为它需要另一个函数作为参数。起初我认为这样可以正常工作:

def my_function(func_argument: function):
    pass

但是函数是未解析的引用。我查看了内置的,它确实不存在,不像str,int和我通常使用的其他人。但是,它必须在某个地方,因为:

>>> def my_function():
...     pass
... 
>>> x = my_function
>>> type(x)
<class 'function'>
>>> type(x).__name__
'function'

定义了函数类的位置,为什么不在内置函数中?我原来的尝试应该是正确的解决方案吗?现在我使用types.FunctionType对其进行了注释,但感觉不对,因为在其他任何地方我们都提示str而不是types.StringType。仅为一个注释导入类型也很奇怪。 typing库也没有任何可以帮助我替换它的内容。

此外,FunctionType如何使用类型注释强制库(我看到其中一些飞来飞去)

1 个答案:

答案 0 :(得分:1)

为什么不使用Callable

  

期望特定签名的回调函数的框架可能会   使用add_action("wp_ajax_nopriv_fetch_tour_return","fetch_tour_return"); add_action("wp_ajax_fetch_tour_return","fetch_tour_return"); function fetch_tour_return(){ global $wpdb; if(isset($_POST["id"])){ $id = $_POST["id"]; $table = $wpdb->prefix."tour"; $tour = $wpdb->get_row("SELECT * FROM ".$table." WHERE id_tour LIKE ".$id.";"); print json_encode($tour); die(); } }

进行类型提示
Callable[[Arg1Type, Arg2Type], ReturnType]