def isBig(x):
if x > 4:
return 'apple'
else:
return 'orange'
这有效:
if isBig(y): return isBig(y)
这不起作用:
if fruit = isBig(y): return fruit
为什么第二个不起作用!?我要一线。除此以外,第一个将调用函数TWICE。
如何在不调用函数两次的情况下使其成为1个衬板?
我看到其他人已经指出了我的旧“分配和设置”食谱,该食谱的最简单版本归结为:
class Holder(object):
def set(self, value):
self.value = value
return value
def get(self):
return self.value
h = Holder()
...
if h.set(isBig(y)): return h.get()
但是,这主要是为了简化Python和直接在if
或中支持赋值的语言之间的音译while
。如果你有在级联这种检查和回报“数百名”,这是 多
好做一些完全不同的:
hundreds = isBig, isSmall, isJuicy, isBlah, ...
for predicate in hundreds:
result = predicate(y)
if result: return result
甚至像
return next(x for x in (f(y) for f in hundreds) if x)
如果不满足谓词就可以获取StopIteration异常,或者
return next((x for x in (f(y) for f in hundreds) if x)), None)
None
当不满足谓词时,if是正确的返回值,等等。
几乎总是使用(甚至希望;-)Holder
技巧/非习惯用法是一种“设计气味”,这表明正在寻找一种不同且更具Python风格的方法-Holder
有理由的一种情况正是我所针对的特殊情况设计了它,例如,要在Python代码和某些非Python之间保持紧密对应的情况(您要在Python中音译参考算法,并希望它先工作才能重构为更Pythonic的形式,或者重新将Python编写为原型,一旦其有效运行,它将转化为C
++,C#,Java等)。
问题内容: 我想知道是否可以像这样在条件运算符中为变量赋值: 用Java有什么办法做到这一点?因为我知道在某些情况下这是可能的,但是我不确定在if语句中是否做错了或者是否不可能。 问题答案: 可以分配变量,但不能在条件语句中声明变量:
问题内容: 在Python中,可以分割字符串并将其分配给变量: 但在Go中似乎无效: 问题: 如何在一个步骤中拆分字符串并分配值? 问题答案: 例如两个步骤 输出: 例如一个步骤 输出:
这是我目前所拥有的,但它不起作用。如何连接所有内容?我认为问题在于逗号。
问题内容: 我刚刚遇到了这段代码 并且认为, 必须 有一个比用无限循环更好的方法。 所以我尝试了: 显然有一个错误。 有什么方法可以避免在那种情况下使用? 编辑: 理想情况下,您要避免重复说两次…恕我直言,重复甚至比a还要糟糕,尤其是在语句很复杂的情况下。 问题答案: 如果您不对数据做任何奇特的事情,例如以后再阅读更多行,总会有:
问题内容: 仅仅使用Java 8中的新lambda和功能特性,我不确定如何做到这一点。 例如,以下内容有效: 但是以下内容给我语法错误: 有任何想法吗? 问题答案: 您已经忘记了: 运行:
问题内容: 我正在使用以下代码: 该值不警报。怎么了 问题答案: 实质上: