2016-12-18 21 views
24

Jestem mylić o błędzie (i) w tym zdjęciu:python-pylint „C0103: Nieprawidłowa nazwa stałej

enter image description here

nie wiem, jak je naprawić. Mój program to ramka sieciowa Python-Flask. Kiedy używam VScode do debugowania mojego programu, Pylint pokazuje te błędy. Wiem, że ten problem nie ma znaczenia, ale denerwuje mnie. Jak mogę to naprawić?

# -*- 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() 

Odpowiedz

38

Jak wyjaśnił Kundor, PEP 8 stwierdza:

Stałe są zwykle określane na poziomie modułu i napisane wielkimi literami podkreślenia oddzielania wyrazów.

Chodzi o to, że "stałe" w pytonie tak naprawdę nie istnieją. Pylint, zgodnie z PEP 8, oczekuje, że zmienne poziomu modułów będą "stałe".

takiej sytuacji masz kilka opcji:

  • nie chcesz to „stałe” rzeczy, a następnie zmienić pylint za const-rgx wyrażenia regularnego być taka sama, jak na przykład variable-rgx,

  • może wyłączyć te ostrzeżenia dla tego pliku, a nawet lokalnie w pliku, używając # pylint: disable=invalid-name,

  • Zmienne poziomu modułu uniknąć owijając je do funkcji.

W twoim przypadku pójdę z trzeciej opcji, tworząc funkcję build_app lub coś podobnego, że wróci aplikację (a może „db” obiektu, jak również, ale trzeba tam kilka opcji). Następnie można dodać sól z drugiej opcji, aby uzyskać coś takiego:

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

+0

"pylint, zgodnie PEP 8, oczekuje Zmienne poziomu modułu za" stałe". AFAICT PEP 8 * nie * mówiąc, że wszystkie zmienne moduł szczebla są stałymi. Mówi się odwrotnie: stałe są zmiennymi na poziomie modułu. – Alec

0

Zmiana nazwy tych zmiennych być wszystkie czapki.

Takie jak

app = Flask(__name__)  => APP = Flask(__name__) 
bootstrap = Bootstrap(app) => BOOTSTRAP = Bootstrap(app)