functions = [x for x in globals().values()
if hasattr(x, '__call__') and
hasattr(x, "__code__") and
x.__code__.co_argcount == 0]
for func in functions:
try:
var, msg = func()
except (ValueError, TypeError):
continue
if not isinstance(var, bool) or not isinstance(msg, str):
continue
if not var:
break
你可以重写第一行,但我不确定哪一个版本不那么冒犯/安全:
functions = [x for x in globals()["functions"]
if x.__code__.co_argcount == 0]
类似这样的方法可能会对您有所帮助,尽管这取决于如何调用所有函数(在本例中,没有参数)。在
我不得不猜测一下,因为我在您的示例中缺少一些上下文,但是您可以使用一个函数列表和一个循环?(这仍然涉及一个if,因为另一种方法更混乱)
像那样的?在
但我是说,如果你真的讨厌if语句:
^{pr2}$基于更新,以及不愿意将函数直接写入列表,您可以(但不应该-认真地说,只列出函数)执行类似的操作(这假设所有函数都是在没有参数的情况下调用的,如果没有参数,则将argcount检查更改为预期的参数):
你可以重写第一行,但我不确定哪一个版本不那么冒犯/安全:
但重申一下——仅仅因为你能做到这一点,并不意味着你应该这么做。我是说,你看,这是一个可恶的东西。在
相关问题 更多 >
编程相关推荐