这段代码是否遵循Python编码标准\风格和习语?

时间:2011-05-02 06:33:23

标签: python coding-style

我在log.py中编写了这段代码。

import logging
import os


# make directory
directory = 'logs'
if not os.path.exists(directory):
  os.makedirs(directory)

# create logger
logger = logging.getLogger('testfile')
logger.setLevel(logging.DEBUG)


loghandler = logging.FileHandler(directory + '\log.txt')

# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# add formatter to loghandler
loghandler.setFormatter(formatter)

# add loghandler to logger
logger.addHandler(loghandler)

现在,用户可以在任何模块中使用它,例如

import log
log.logger.warn("gjh")

3 个答案:

答案 0 :(得分:3)

您正在为单个全局对象创建整个模块。如果你想保存代码,只需要一个创建它的函数:

def make_logger():
  logger = logging.getLogger('testfile')
  # initializations...
  # ...
  return logger

logger = make_logger()
logger.warn('ghj')

使用关键字参数和默认值,您可以在需要时轻松自定义其创建(并且可能会在您的程序变得更复杂时出现)。

答案 1 :(得分:2)

我看到了一些问题

  1. 显然你正在使用两个空格缩进这个is a crime in Python
  2. 您使用'\log.txt'只是因为小写L作为控制字符没有特殊含义。最好使用特定于os的路径构造函数(参见os.path.join

答案 2 :(得分:1)

关于编码风格,我建议使用专用工具。以前有过一些帖子,例如这个帖子:PyLint, PyChecker or PyFlakes?

我个人更喜欢使用pylint配置文件,以适应我想在项目中遵循的一些事项(例如特殊变量名称)。如果您想快速查看,请尝试pep8

最好的问候,Rainer