当前位置:  开发笔记 > 编程语言 > 正文

我怎样才能紧密实现?:来自Python中的C++/C#?

如何解决《我怎样才能紧密实现?:来自Python中的C++/C#?》经验,为你挑选了2个好方法。

在C#中,我可以轻松编写以下内容:

string stringValue = string.IsNullOrEmpty( otherString ) ? defaultString : otherString;

有没有快速的方法在Python中做同样的事情或我坚持使用'if'语句?



1> Thomas Woute..:

在Python 2.5中,有

A if C else B

它的行为很像?:在C.但是,它有两个原因:可读性,以及通常有一种更简单的方法来处理问题.例如,在您的情况下:

stringValue = otherString or defaultString


那不是倒退吗?一般来说,因为像"cond和A或B"之类的问题,所以和/或技巧都不受欢迎,其中A恰好是0的假值.有一些变通方法,如(cond和[A]或[B])[0 ],但几乎添加了if/else语法,以消除对此类滥用的需要.

2> Konrad Rudol..:

@担

if otherString:
   stringValue = otherString
else:
   stringValue = defaultString

这种类型的代码更长,更具表现力,但也更具可读性

是的,它更长.不太确定"更具表现力"和"更具可读性".至少,你的主张是有争议的.出于两个原因,我甚至会说它完全错了.

首先,您的代码强调决策(非常极端).另一方面,条件运算符强调其他东西,即值(分别是所述值的赋值).这正是这段代码的作者想要的.决策实际上是代码的副产品.这里重要的部分是分配操作.你的代码在很多语法噪音中隐藏了这个赋值:分支.

你的代码表达力较差,因为它将重点从重要部分转移.

即使这样,你的代码也可能胜过一些不起眼的ASCII艺术?:.内联 - if将是更可取的.就个人而言,我不喜欢Python 2.5中引入的变体,因为它是向后的.我更喜欢读取与C三元运算符相同的流(方向)但使用单词而不是ASCII字符的东西:

C = if cond then A else B

这赢得了胜利.

不幸的是,C和C#没有这样的表达声明.但是(这是第二个论点),C语言的三元条件运算符已经建立了很长时间,它已经成为一种成语.三元运算符与"常规" if语句一样,都是语言的一部分.因为它是一个成语,任何知道该语言的人都会立即读取这段代码.此外,它是表达这些语义的极短,简洁的方式.事实上,它是最短的可想象的方式.它非常富有表现力,因为它不会因不必要的噪音而模糊本质.

最后,杰夫阿特伍德已经写出了完美的结论:最好的代码根本就没有代码.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有