简短地回答,Python不会为你进行静态语言般的参数类型判断。
Python是一种动态类型的语言,你在声明函数时并不会声明参数的类型。即使解释器想为你检查参数类型,这也是不可能的,因为它也不知道某个参数的正确类型是什么。例如下面的函数声明:
def foo(a, b):
pass
如果你是解释器,单靠这点信息能知道a,b的"正确"类型吗?
这个特征是python的优点之一,当然你也可能觉得是缺点,仁者见仁吧。
如果你的问题是其他人在使用你的代码时错误太多,那么坚决方式很简单:
使用有意义的命名,添加必要的文档:
def view(request, uid):
"""
A request handler for processing user info.
:param request: client request object.
:type request: :class:mypackage.mymodule.Request
:param uid: user id
:type uid: integer.
:returns: blah blah
"""
pass
如果这样还有人抱怨说你的函数经常因为参数类型出问题,你就对他说,眼睛瞎了么!
你要觉得上面麻烦的话,自己检查下类型会死?
def view(request, uid):
assert typeof(request) == Request, "request should be an instance do mypackage.mymodule.Request; Got " + str(typeof(request))
这代码编辑器真心蛋疼啊。。预览跟最后结果还不一样, 我不调了,大家会意就好