错误信息“python-pylint 'C0103:Invalid constant name”

新手上路,请多包涵

我对这张照片中的错误感到困惑:

在此处输入图像描述

我不知道如何修复它们。我的程序是一个 Python- Flask 网络框架。当我使用 Visual Studio Code 调试我的程序时,Pylint 会显示这些错误。我知道这个问题无关紧要,但这让我很恼火。我该如何解决?

 # -*- coding: utf-8 -*-
import sys
from flask import Flask
from flask_bootstrap import Bootstrap
from flask_moment import Moment
#from flask_wtf import Form
#from wtforms import StringField, SubmitField
#from wtforms.validators import Required
from flask_sqlalchemy import SQLAlchemy

reload(sys)
sys.setdefaultencoding('utf-8')

app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost:3306/test?'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

bootstrap = Bootstrap(app)
moment = Moment(app)
db = SQLAlchemy(app)

if __name__ == '__main__':
    db.create_all()
    app.run()

原文由 Xing 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 828
2 个回答

正如 Kundor 所解释的那样, PEP 8 指出:

常量通常在模块级别定义,并全部用大写字母书写,并用下划线分隔单词。

关键是 Python 中的“常量”并不真正存在。根据 PEP 8,Pylint 期望模块级变量是“常量”。

话虽这么说,你有几个选择:

  • 你不想要这个“常量”的东西,然后改变 Pylint 的 const-rgx 正则表达式与 variable-rgx 相同,

  • 您可以使用 # pylint: disable=invalid-name 停用此文件的这些警告,甚至可以在文件本地停用这些警告,

  • 通过将它们包装到一个函数中来避免模块级变量。

在你的情况下,我会选择第三个选项,通过创建一个 build_app 函数或类似的东西。这将返回应用程序(也可能返回“db”对象,但您有多种选择)。然后你可以添加第二个选项的盐来得到类似的东西:

app = build_app() # pylint: disable=invalid-name

原文由 sthenault 发布,翻译遵循 CC BY-SA 4.0 许可协议

PEP 8 仅考虑模块级别的常量这一事实可能是许多开发人员使用专用 main() 函数的原因。

所以你可以这样解决你的问题:

 def main():
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'hard to guess string'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost:3306/test?'
    app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

    bootstrap = Bootstrap(app)
    moment = Moment(app)
    db = SQLAlchemy(app)
    db.create_all()
    app.run()

if __name__ == '__main__':
    main()

原文由 T.M. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题