您如何检查传递给函数的任何参数是否为 None?

day*_*mer 2 python

我有一个像

    @staticmethod
    def add_transaction(name, date, amount, debit, user, category_id):
        pass
Run Code Online (Sandbox Code Playgroud)

测试它们中的任何一个的最佳方法是None什么?

if not (name or date or amount or debit or user or category_id):
    raise ValueError
Run Code Online (Sandbox Code Playgroud)

Ben*_*son 5

if any(arg is None for arg in (name, date, amount, debit, user, category_id))):
    raise ValueError("I hate None")
Run Code Online (Sandbox Code Playgroud)

您需要测试arg is None,而不仅仅是使用not. 有了not,你最终会抛出一个异常,如果任何参数是False0[]等,这是不是你想要的。

@DSM 对if None in (name, date...作品的建议也是如此——这取决于你喜欢哪个。

旁注:您的函数需要很多参数。我想知道您是否不能以某种方式重构它 - 也许您可以创建一个Transaction封装这些数据的类,并将此方法签名更改为add_transaction(transaction).

  • .. 为什么不是`None in (name, ...)`? (2认同)