【发布时间】:2021-04-06 12:53:40
【问题描述】:
在玩icecream 时,我编写了以下代码行
if __debug__:
try:
from icecream import ic
ic.configureOutput(includeContext=True)
except ImportError: # Graceful fallback if IceCream isn't installed.
ic = lambda *a: None if not a else (a[0] if len(a) == 1 else a) # noqa
else:
ic = lambda *a: None if not a else (a[0] if len(a) == 1 else a) # noqa
如您所见,我想在这两种情况下都将(相同的)lambda 表达式分配给 ic
- 如果不调试代码或
- 如果导入冰淇淋不起作用
我想知道是否有一种(可能是 pythonic 的)方法来处理这个想法而没有冗余。
【问题讨论】:
-
ic = lambda ...if not __debug__: try: import ... except ImportError: pass...? -
感谢@deceze,这个“覆盖”
ic-definition 是个好主意,但不是那种 Python 风格,不是吗? -
为什么不呢?
-
@deceze 我认为重新定义/覆盖在某种程度上是不干净的。但这只是个人感觉。确实,您的建议满足了我的要求,因此很好。如果没有进一步的解决方案出现,我当然会接受它作为你的答案(如果你喜欢这样写的话)。或者我会通过自我回答提及你。
-
@deceze 我根据您的评论添加了an answer,谢谢! LMK 如果您有任何想要添加的内容。
标签: python python-3.x if-statement try-except