【问题标题】:Python - Call a Function on a ConditionPython - 根据条件调用函数
【发布时间】:2019-04-13 05:31:21
【问题描述】:

我想知道是否有一种简洁的方法可以根据条件调用函数。

我有这个:

if list_1 != []:
    some_dataframe_df = myfunction()

我想知道在ternary operator 或类似的东西中是否有可能。

如果我这样做了

(some_dataframe_df = myfunction()) if list_1 != [] else pass

它不起作用。

【问题讨论】:

  • 第一段代码没问题。试图进一步减少它就像只是混淆它的观点。较小并不总是更好。
  • 另外,使用if not list_1: 代替list != [] 是一个更好的模式。如果“iterable”为空,这将评估为真/假。这允许对所有零长度可迭代对象进行正确检查,即使它是不同类型的可迭代对象(tuble、dict 键等)

标签: python if-statement ternary-operator


【解决方案1】:

在三元运算符中,条件是表达式,而不是语句。因此,您不能使用pass,并且您使用的正常if 语句是正确的。

【讨论】:

    【解决方案2】:

    在三元运算符中使用 pass 似乎是个坏主意,尤其是因为您可以内联单个语句 if

    如果你不担心你的列表是None,你可以缩短测试只使用列表本身的布尔值。这样做的好处是它允许任何正常的序列,而不仅仅是列表。

    总而言之,你可以这样做:

    if list_1: some_dataframe_df = myfunction()
    

    【讨论】:

      【解决方案3】:

      您的代码很好。我建议的唯一更改是使用非空列表的固有真实性:

      if list_1:
          some_dataframe_df = myfunction()
      

      如果你想使用三元语句,可以写成:

      some_dataframe_df = myfunction() if list_1 else some_dataframe_df
      

      但是,这既不简洁也不可读。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多