gpt4 book ai didi

python - 对于某些数字,IntegerField 值会转换为字符串

转载 作者:行者123 更新时间:2023-11-30 23:36:57 26 4
gpt4 key购买 nike

拥有带有整数字段的 Cloud Endpoints (ProtoRPC) 消息类,例如

TestMsg(messages.Message):
int_field = messages.IntegerField(1)

和一个方法:

@endpoints.method(VoidMessage, TestMsg)
def test_int_field():
return TestMsg(int_field=1234567890123)

在本地开发服务器上,JSON 响应 正确 结果:

{ int_field: 1234567890123 }

而在生产中,由于某种原因,数字会转换为字符串:

{ int_field: "1234567890123" }

对于较小的数字,整数似乎不会转换为字符串。

这是预期的行为吗?任何人都可以重现吗? (如果重要的话:我正在欧盟数据中心运行此代码)

最佳答案

我想@proppy是对的。此外,它在发现格式中明确指出

A 32-bit signed integer ("integer" type, int32 format). It has a minimum value of -2,147,483,648 and a maximum value of 2,147,483,647 (inclusive)

A 32-bit unsigned integer ("integer" type, uint32 format). It has a minimum value of 0 and a maximum value of 4,294,967,295 (inclusive).

所有其他类型的 int/bigint/whatever 值都表示为具有不同格式的“字符串”类型。更多信息:https://developers.google.com/discovery/v1/type-format

所以,1234567890123数字实际上不能用“整数”类型表示。只是开发服务器不会自动将整数转换为字符串(就像生产基础设施一样),而且我在本地测试时没有意识到这个数字有多大。

事实证明,Google 的一个团队已经在努力使其保持一致:https://code.google.com/p/googleappengine/issues/detail?id=9173

关于python - 对于某些数字,IntegerField 值会转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985069/

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