Pythonic写法:如何确保两个参数同时为None或同时非None?
Pythonic写法实现函数参数成对非空检查
你的需求是确保函数foo(x, y=None, z=None)中,y和z要么同时为None,要么同时不为None,仅传入其中一个时触发断言。原写法只覆盖了y非空时检查z的情况,存在遗漏(比如传入z但y为空时不会触发断言),这里提供两种更简洁严谨的Pythonic实现:
- 直观的状态一致性断言
直接判断两者的None状态是否完全一致,逻辑清晰易懂:
def foo(x, y=None, z=None): assert (y is None) == (z is None), "y和z必须同时为None或同时不为None" # 函数逻辑...
- 异或逻辑实现(可读性稍弱)
利用异或运算符判断两者状态是否不同,不同时触发断言:
def foo(x, y=None, z=None): assert not (y is None) ^ (z is None), "y和z不能仅传入其中一个" # 函数逻辑...
这两种写法都能完整覆盖需求,相比原写法更严谨,也符合Python追求简洁直观的风格。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

