[英]c-style of assigning variable in the if-statement for python
在 c/c++ 中,我可以在 if 语句中“为变量赋值”,如下所示:
int a;
if ( (a = foo()) > 0)
{
printf("%d\n", a);
}
python 是否有任何等效声明?
并不真地。 在 Python 中,赋值是一个语句,而在 C 中,它是一个表达式。 if 语句中的条件必须是两种语言的表达式。
在 Python 中, if 条件中的赋值是被禁止的,所以你最终会出现语法错误,这个设计决定是为了防止这样的错误:
在 C 中,您可以轻松做到:
if (a = 1) {
...
}
而你的意思是:
if (a == 1) {
...
}
直到今天,我相信答案是否定的。
我认为这很不幸,所以我写了一个小 Python 模块,我称之为let
,它允许你做这种事情。
像这样安装它:
pip install let
我相信以下内容将完成您正在寻找的内容:
from let import let
if let(a = foo()):
print(a)
我从您的答案中删除了> 0
,假设foo
将返回0
或正 integer。 如果我不正确并且您确实想检查返回值是否大于 0,那么这也可以:
if let(a = foo()) > 0:
print(a)
如果你有一个 function 每次返回不同的东西直到最终它返回False
,那么let
也可以与while
循环很好地结合。 IE,IBM 的 DB2 模块要求你反复调用一个fetch
方法从数据库中获取每一行。 您可以使用let
来简化循环遍历其中所有内容的逻辑,如下所示:
while let(result = db.fetch_results()):
# do whatever with result here
不,你不能做到这一点,也不能做得很好。 这种编码风格导致代码复杂且难以阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.