我对这张照片中的错误感到困惑:
我不知道如何修复它们。我的程序是一个Python-Flask Web框架。当我使用VScode调试程序时,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()
答案 0 :(得分:48)
正如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
答案 1 :(得分:12)
PEP8仅考虑模块级别的常量这一事实可能是许多开发人员使用专用 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()
答案 2 :(得分:5)
PEP 8命令常量should be in all caps的名称。
因此,将这些变量重命名为全部大写。
提示:如果你google' C0103'它将带您进入PyLint消息wiki entry for that message,并附上详细信息。
答案 3 :(得分:2)
将这些变量重命名为全部大写。
如
app = Flask(__name__) => APP = Flask(__name__)
bootstrap = Bootstrap(app) => BOOTSTRAP = Bootstrap(app)
答案 4 :(得分:0)
您可以在python脚本的开头使用以下行并执行它:
#pylint:disable =无效名称
它将在静态代码分析器中禁用所有无效的常量约定消息。