gpt4 book ai didi

python 2 : function alias or macro

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:33 24 4
gpt4 key购买 nike

我想知道是否有办法在 Python 2.7 中为函数创建宏或别名。

示例:我正在尝试使用 logging 模块并为函数 logging.debuglogging.infologging.error 等。如果我在需要日志的地方使用这些函数,一切正常。但是如果我尝试像这样创建一个“别名”函数包装器:

def debugLog(message):
logging.debug(message)

...然后行号报告不再按预期工作,报告的行始终说明包装器的位置而不是实际日志,这没有任何实际用途。

我确实找到了这个解决方案:

import logging
from logging import info as infoLog
from logging import debug as debugLog
from logging import error as errorLog
....

...但它不适合我,因为我还创建了自己的日志记录严重性:

logging.addLevelName(60, "NORMAL")

...如果可能的话,我也想为它创建一个别名/宏,如 normalLog(message)=logging.log(60, message) 吗?我在 Python Docs 中找不到任何全面的内容或在线。

最佳答案

您可以使用 functools.partial :

import functools
import logging
normalLog = functools.partial(logging.log, 60)

效果很好:

normalLog("Hey!!")
Level 60:root:Hey!!

partial 将参数绑定(bind)到函数调用并返回一个部分对象(一个包含必要信息的可调用对象),因此您也可以在 addLevelName 方法中使用它:

activateLevel = functools.partial(logging.addLevelName, 60, "NORMAL")
activateLevel()

这里有一个 live working example ,请注意日志行已正确报告。

关于 python 2 : function alias or macro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45380540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com