繁体   English   中英

在 python 的 if 语句中分配变量的 c 样式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM