Thrift Python clien中具有默认值的默认参数

2024-05-13 11:58:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我让Python客户机调用一个带有如下可选参数的精简服务:

bool postTweet(1: required Tweet tweet, 2: i32 x = 100);

如果我试图从Python客户端调用此服务而不传递可选参数x,则会出现异常:

TypeError: postTweet() takes exactly 2 arguments (1 given)

有什么线索可以解释为什么我得到这个异常,但是它是一个带有默认值的可选参数吗?


Tags: 客户端参数客户机requiredarguments精简giventweet
2条回答

x参数必须与其他参数分开定义。否则,会把其他事情搞砸。要创建可选参数,函数必须类似于: def函数(x=0): 这样,您可以选择使用参数的x值,但是如果您通过 函数() X自动分配给0。 记住,x必须在参数中单独设置,而不是与其他参数混合。

不可能用默认值定义一个节俭函数(至少从我阅读节俭白皮书后的理解来看)

您可以做的是定义一个特殊的参数结构,它允许您省略一些字段。

节约代码示例:

struct PostTweetParameter {
1: required Tweet tweet;
2: optional i32 x;
}

bool postTweet(1: PostTweetParameter param);

然后可以构造省略了字段xPostTweetParameter

相关问题 更多 >