在模块导入时,打印出有用的声明

时间:2018-07-11 17:17:10

标签: python python-3.x

我想创建一个模块,该模块在加载时会自动打印一些内容。代码看起来像这样。

 from functionList import *



OUTPUT: Hello, here are the available functions in this module created by....

如果可能的话,我也希望它可以被抑制。

2 个答案:

答案 0 :(得分:4)

将执行全局范围内的任何内容。因此,如果您将print放在没有缩进的位置,它也会被执行。同样在导入时,import确实会这样做。

但是仅仅因为它可以做到,并不意味着就应该这样做。如果突然每个图书馆决定打印一堆有用的笔记,那将是非常可怕的。这就是文档的用途,请不要将两者混在一起。

答案 1 :(得分:0)

如果您可以更改模块中的代码,则在全局级别添加简单的print应该可以完成您想做的事情。

例如在functionlist.py中:

import os

print("Module functionlist has been imported")

def add_function():
    pass

如果希望将其抑制,则可以使用日志记录库中的log命令替换print命令。

如果要使其可抑制:

import logging

logger = logging.getLogger(__name__) 
logger.debug("Module functionlist has been imported")

def add_function():
    pass

请注意,由于python缓存模块导入,因此每次运行脚本时,它只会在首次导入时打印。

正如其他人指出的那样,在导入模块时进行打印被认为是不好的做法,应避免使用。