Python:模式[sth=get\u sth();if sth:do\u thing\u on(sth)]

Python:模式[sth=get\u sth();if sth:do\u thing\u on(sth)],python,Python,嗨 我想一切都有问题。。。 我只是想知道Python中是否有一种很好的方法来缩短此模式: something = get_something() if something: do_a_thing_with(something) 这意味着我只想在if上下文中输入变量something不是None或False,然后在此上下文中自动设置此变量!有没有可能用声明 PS:我不想定义更多的东西。。。我在寻找一些在飞行中使用的语句 这是一个非常好的例子 事情不应该比实际情况更简单,也不应该比实际情况

我想一切都有问题。。。 我只是想知道Python中是否有一种很好的方法来缩短此模式:

something = get_something()
if something:
    do_a_thing_with(something)
这意味着我只想在if上下文中输入变量something不是None或False,然后在此上下文中自动设置此变量!有没有可能用声明

PS:我不想定义更多的东西。。。我在寻找一些在飞行中使用的语句

这是一个非常好的例子

事情不应该比实际情况更简单,也不应该比实际情况更复杂

请参见with语句的工作原理和提供上下文保护。那就够复杂了

这是一个很好的解释

事情不应该比实际情况更简单,也不应该比实际情况更复杂

请参见with语句的工作原理和提供上下文保护。那就够复杂了


如果它是您在@pyfunc注释中建议的代码中非常常见的模式,则您可以将其设置为函数:

def safeProcessData(getData, handleData):
    buffer = getData()
    if buffer:
        handleData(buffer)

在这种情况下,参数getData和handleData将是可调用的,这意味着任何函数自由或实现_调用_的成员和对象。

如果它是一种在代码中非常常见的模式,正如您在@pyfunc注释中所建议的,您可以将其设置为函数:

def safeProcessData(getData, handleData):
    buffer = getData()
    if buffer:
        handleData(buffer)

在这种情况下,参数getData和handleData将是可调用的,这意味着任何函数自由或实现uuu call uuu的成员和对象。

正如其他人所说,您现有的代码已经很好而且很短了。。。如果您真的想要一行,请尝试以下列表:

[do_a_thing_with(something) for something in [get_something()] if something]

正如其他人所说,您现有的代码已经很好很短了。。。如果您真的想要一行,请尝试以下列表:

[do_a_thing_with(something) for something in [get_something()] if something]


这对你来说还不够短吗?我可以留一行:@sebbiq:完全忘记了。是的。-1:代码高尔夫没有赢家。>:-谢谢你的Python课程。。。但这不是重点我猜这对你来说不够短吗?我可以留一行:@sebbiq:完全忘记了。是的。-1:代码高尔夫没有赢家。>:-谢谢你的Python课程。。。但这不是重点,我猜这意味着我可以用它来做这个,但我必须创建一个丑陋的黑客上下文管理器。。。正当六羟甲基三聚氰胺六甲醚。。。我只是想知道是否有标准的东西,因为这是一种在我的代码中非常常见的模式!是的,好的。。。因此,今天保存一行代码不会牺牲可读性:这意味着我可以使用它来实现这一点,但我必须创建一个难看的黑客上下文管理器。。。正当六羟甲基三聚氰胺六甲醚。。。我只是想知道是否有标准的东西,因为这是一种在我的代码中非常常见的模式!是的,好的。。。因此,今天保存一行代码不会牺牲可读性:是的,这是一个很好的方法,但我只是想知道是否有一个标准的方法。。。像是我不知道的一句话,或者什么的。但是看起来没有!是的,这是一个很好的方法,但我只是想知道是否有一个标准的方法。。。像是我不知道的一句话,或者什么的。但是看起来没有!哇!那是个好主意!但实际上我并不想牺牲可读性。如果do_a_thing_with返回一个值,则应在末尾添加[0]以获得单个值,而不是列表。我很惭愧地承认我也想到了这种可怕的方式!哇!那是个好主意!但实际上我并不想牺牲可读性。如果do_a_thing_with返回一个值,则应在末尾添加[0]以获得单个值,而不是列表。我很惭愧地承认我也想到了这种可怕的方式!