我希望我的函数被注释为它需要另一个函数作为参数。起初我认为这样可以正常工作:
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如何使用类型注释强制库(我看到其中一些飞来飞去)
答案 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]