gpt4 book ai didi

python - http-post 参数 Python 的类型检查;使用类型作为字典中的值

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:04 24 4
gpt4 key购买 nike

对于我正在编写的 API,我想编写一个“check_params”方法,以确保在 http-post 请求正文中传递的参数能够被适本地类型转换。

例如,假设我要传递一个参数“latitude”。然后,

    'latitude'='thisisnotafloat'

应该报错,而

    'latitude'='43.21'

不应抛出错误。

要处理多个参数,创建一个以类型为值的字典有什么问题吗:

    required_types = {
'arg1':str,
'arg2':int,
'arg3':str,
'arg4':float
}

然后执行鸭子类型(为了简化问题,假设我正在处理一个必需的 arg 根本没有传入并且类型检查仅在存在检查之后发生的情况)。

    for arg, type_ in required_types.iteritems():
try:
type_(self.get_argument(arg)) #using tornado here to get body arg
except:
handle_invalid_type_error()

或者,我可以将类型存储为字符串并使用 eval() 函数。例如,

     required_types = {
'arg1':'str',
'arg2':'int',
'arg3':'str',
'arg4':'float'
}

for arg, type_ in required_types.iteritems():
try:
eval(type_)(self.get_argument(arg)) #using tornado here to get body arg
except:
handle_invalid_type_error()

这里有明显的赢家吗?或者另一种更好的方法?

最佳答案

推荐的(“Pythonic”)方法是只在需要时进行转换,如果失败则引发错误。除非在程序的后期处理错误非常不方便,否则我根本不会使用 check_params 方法。

此外,我认为将类型存储为字符串并对其进行eval绝对没有任何优势。如果您要动态获取类型,那么当然可以使用 eval,否则它会增加一个额外的处理步骤,尽管它的成本可以忽略不计,但没有任何用处。并且通常最好远离 eval 除非您真的需要它(从安全的角度来看,这是一个很好的心态)。

关于python - http-post 参数 Python 的类型检查;使用类型作为字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com