说我对人及其年龄有一个决定。
ages = {"Tom": 44, "Amy": 15, "Dude": 23, "Namey McNameface": 71}
然后我想检查是否有人可以开车。如果法律上不允许他们这样做,则应提出警告。
import logging
logger = logging.getLogger(__name__)
def can_drive_car(name):
if ages[name] < 16:
logger.warning("{} shouldn't be doing that".format(name))
return False
return True
if can_drive_car("Dude"): force_to_drive_me_home("Dude")
我想拥有一个功能,该功能可以合法地获得所有人的名字。因为要求非常复杂,所以检查功能最简单的方法是调用仅检查一个人并返回该功能返回True的所有人的功能。
def get_everyone_who_can_drive():
return [p for p in ages.keys() if can_drive_car(p)]
>>> get_everyone_who_can_drive()
["Tom", "Dude", "Namey McNameface"]
太好了!现在,我有了一个清单,每个人都可以将我送回家而无需坐牢。
问题:我调用了一个函数,该函数在评估Amy时会发出警告。问题是,我并没有特别检查Amy,所以即使我希望在对每个人进行评估时都出现该警告,但我不希望在同时评估每个人时出现该警告。
通过仅更改get_everyone_who_can_drive
,不传递任何参数,并且不对程序进行结构调整甚至使其变得有些理智,该如何防止警告出现?
答案 0 :(得分:0)
将日志记录从功能def can_drive_car(name):
return ages[name] >= 16
if can_drive_car("Dude"):
force_to_drive_me_home("Dude")
else:
logger.warning("Dude shouldn't be doing that")
移动到调用该功能的代码
import logging
logger = logging.getLogger(<name of module>)
previous_level = logger.level
logger.setLevel(logging.ERROR)
get_everyone_who_can_drive()
logger.setLevel(previous_level)
现在您的理解力将不会记录警告
编辑:
如果您可以访问生成警告的记录器,则可以将日志级别设置为更高的级别(例如ERROR),这样就不会记录警告
declare global {
namespace NodeJS {
interface Process {
_getActiveHandles(): any[];
}
}
}