由于XUL研究暂时没有大的进展,又回到了Python上面来。今天写Python代码,犯了一个低级的错误,Python中,函数的参数传递是引用方式的,暨我传入的参数,原来什么类型,函数中还是什么类型,参数不会进行转换。这个和强类型语言的参数传递不同。

我的原始代码:
    if Valid.User(req.form["user"]) is False:
        return "User"+Step1()
这里传入的参数不是字符串类型的,而我期望的是传入req.form["user"]的值(字串),以便后续处理。在我的User函数中,起始就对参数进行判断,老是不正确,后来通过打印发现是传入的参数类型不正确,根本就不是字串,而是req.form的类型了。

解决方法就是在调用的函数里面尝试将传入的参数转为字串,如果异常则返回失败。
    try:
        name = str(name)            #只允许字符串
    except :
        return False

还有,就是好久没有使用正则表达式了,今天居然忘记一些写法了,郁闷。