嗨!
我想一切都在问题中...... 我只是想知道在Python中是否有一种很好的方法来缩短这种模式:
something = get_something()
if something:
do_a_thing_with(something)
这意味着我只想在变量if
不是None(或False)的情况下进入something
上下文,然后在此上下文中自动设置此变量!是否可以使用with
声明?
PS:我不想要更多东西定义......我正在寻找一些即时使用的声明?!
答案 0 :(得分:5)
这就像它的pythonic一样。
事情应该不再简化,也不应该比它们更复杂。
了解with语句的工作原理并提供上下文保护。会很复杂。
答案 1 :(得分:1)
如果它是一个在你的代码中非常频繁的模式(正如你在@ pyfunc的answer的评论中所建议的那样),你可以把它变成一个函数:
def safeProcessData(getData, handleData):
buffer = getData()
if buffer:
handleData(buffer)
在这种情况下,参数getData
和handleData
将是callables,意味着任何函数(free或member)和实现__call__
的对象。
答案 2 :(得分:1)
正如其他人所说,你现有的代码已经很好而且简短...如果你真的想要一个单行,请尝试列表理解:
[do_a_thing_with(something) for something in [get_something()] if something]