Pylint로 Python 코드 품질 향상
8248 단어 codequalitypylintpythonpep8
소개
이 기사에서는 Pylint와 Python 코드가 PEP8 지침을 준수하는지 확인하는 데 어떻게 사용되는지 살펴보겠습니다.
PEP8이란 무엇입니까?
PEP8은 파이썬 코드를 작성하는 방법에 대한 지침과 모범 사례를 제공하여 코드를 읽기 쉽고 일관성 있게 만드는 문서입니다.
콘텐츠
필린트란?
Pylint는 오류를 확인하고 코딩 표준을 적용하려고 시도하는 Python 도구입니다.
파이린트 설치
터미널
pip install pylint
또는 pip3 install pylint
을 통해 Pylint를 설치합니다.간단한 퀴즈 앱 만들기
유명한 쇼 "The Big Bang Theory"의 다섯 가지 퀴즈를 포함하는 간단한 Python 퀴즈 앱을 빌드한 다음 Pylint를 실행하고 권장 사항을 변경합니다.
절차:
터미널
mkdir quiz_app
을 실행합니다.실행
cd quiz_app
실행
touch app.py
Code .
import random
from string import ascii_lowercase
NUM_QUESTIONS_PER_QUIZ = 5
QUESTIONS = {
"How old was Sheldon when he got his first P.h.d?": [
"16",
"18",
"20",
"22",
],
"What’s Amy’s job": [
"Neurobiologist",
"Marine biologist",
"Forensic biologist",
"Microbiologist",
],
"Which couple gets married first?": [
"Bernadette and Howard",
"Penny and Leonard",
"Amy and Sheldon",
"Emily and raj",
],
"What is Leonard primary health concern?": [
"He is lactose intolerant",
"He is allergic to peanuts",
"He has to eat gluten free",
"He has diabetes",
],
"Who does Howard meet while serving Thanksgiving dinner at a shelter?": [
"Elon Musk",
"Jeff Bezos",
"Bill Gates",
"Steve Jobs",
]
}
num_questions = min(NUM_QUESTIONS_PER_QUIZ, len(QUESTIONS))
questions = random.sample(list(QUESTIONS.items()), k=num_questions)
num_correct = 0
for num, (question, alternatives) in enumerate(questions, start=1):
print(f"\nQuestion {num}:")
print(f"{question}?")
correct_answer = alternatives[0]
labeled_alternatives = dict(
zip(ascii_lowercase, random.sample(alternatives, k=len(alternatives)))
)
for label, alternative in labeled_alternatives.items():
print(f" {label}) {alternative}")
while (answer_label := input("\nChoice? ")) not in labeled_alternatives:
print(f"Please answer one of {', '.join(labeled_alternatives)}")
answer = labeled_alternatives[answer_label]
if answer == correct_answer:
num_correct += 1
print("⭐ Correct! ⭐")
else:
print(f"The answer is {correct_answer!r}, not {answer!r}")
print(f"\nYou got {num_correct} correct out of {num} questions")
우리의 Quiz_app에서 Pylit을 실행하세요
이제 위의 코드에서 pylint를 실행합니다. Vs Code를 사용하는 경우 bash를 시작하고
pylint app.py
을 실행합니다. pylint 다음에 파이썬 파일을 지정해야 합니다.또는
pylint app.py
을 실행하여 squeeze_app 디렉토리로 변경하여 터미널에서 pylint를 실행할 수 있습니다.pylint를 실행한 후 명령 창에 Pylint 결과가 표시됩니다. 결과는 아래와 같습니다.
************* Module app
app.py:62:0: C0304: Final newline missing (missing-final-newline)
app.py:1:0: C0114: Missing module docstring (missing-module-docstring)
app.py:41:0: C0103: Constant name "num_correct" doesn't conform to UPPER_CASE naming style (invalid-name)
app.py:62:48: W0631: Using possibly undefined loop variable 'num' (undefined-loop-variable)
------------------------------------------------------------------
Your code has been rated at 8.18/10
app.py:62:0은 영향을 받는 줄을 나타내고 C0304:는 메시지 코드입니다. 이 경우 첫 번째 줄은 62줄 0열의 코딩 표준 위반을 나타냅니다.
위에 표시된 것과 별도로 얻을 수 있는 다른 메시지 코드가 있습니다. 다음은 접두사 목록과 그 의미입니다.
표시된 결과 끝에 Pylit이 수행하는 등급이 있습니다. 이 등급은 코드가 PEP 8을 얼마나 준수하는지 보여줍니다. 이 코드는 10점 만점에 8.18점을 받았습니다. 10점 만점에 10점이 되도록 노력하세요.
권장 변경 수행
새 파일을 만들고 이름을
app_modified.py
으로 지정합니다. app.py
에서 코드를 복사하여 권장 사항을 변경하는 데 사용할 수 있습니다.C0103: Constant name "num_correct" doesn't conform to UPPER_CASE naming style (invalid-name)
으로 시작 보시다시피 pylint는 num_correct
을 대문자로 변경해야 함을 알려줍니다. 세 가지 인스턴스에 사용된 num_correct
을 찾아 NUM_CORRECT
으로 바꿉니다.이 시점에서 Pylint를 실행하면 10점 만점에 8.64점을 얻습니다.
C0114: Missing module docstring (missing-module-docstring)
의 경우 . docstring은 코드가 수행하는 작업에 대한 간단한 설명이며 코드 측면에 대한 세부 사항을 포함할 수 있습니다. 주로 모듈, 함수, 클래스 또는 메서드 정의에서 첫 번째 문으로 발생합니다.프로그램 시작 부분에
"""A quiz app based on the show: The Big Bang Theory"""
을 추가합니다.C0304: Final newline missing (missing-final-newline)
의 경우 프로그램 끝에 빈 줄을 추가합니다.W0631: Using possibly undefined loop variable 'num' (undefined-loop-variable)
을 무시할 수 있습니다. 변경하면 프로그램 실행 방식에 영향을 미칩니다.이 시점에서 Pylint를 실행하면 10점 만점에 9.55점을 얻습니다.
최종 코드는 다음과 유사합니다.
"""A quiz app based on the show: The Big Bang Theory"""
import random
from string import ascii_lowercase
NUM_QUESTIONS_PER_QUIZ = 5
QUESTIONS = {
"How old was Sheldon when he got his first P.h.d?": [
"16",
"18",
"20",
"22",
],
"What’s Amy’s job": [
"Neurobiologist",
"Marine biologist",
"Forensic biologist",
"Microbiologist",
],
"Which couple gets married first?": [
"Bernadette and Howard",
"Penny and Leonard",
"Amy and Sheldon",
"Emily and raj",
],
"What is Leonard primary health concern?": [
"He is lactose intolerant",
"He is allergic to peanuts",
"He has to eat gluten free",
"He has diabetes",
],
"Who does Howard meet while serving Thanksgiving dinner at a shelter?": [
"Elon Musk",
"Jeff Bezos",
"Bill Gates",
"Steve Jobs",
]
}
num_questions = min(NUM_QUESTIONS_PER_QUIZ, len(QUESTIONS))
questions = random.sample(list(QUESTIONS.items()), k=num_questions)
NUM_CORRECT = 0
for num, (question, alternatives) in enumerate(questions, start=1):
print(f"\nQuestion {num}:")
print(f"{question}?")
correct_answer = alternatives[0]
labeled_alternatives = dict(
zip(ascii_lowercase, random.sample(alternatives, k=len(alternatives)))
)
for label, alternative in labeled_alternatives.items():
print(f" {label}) {alternative}")
while (answer_label := input("\nChoice? ")) not in labeled_alternatives:
print(f"Please answer one of {', '.join(labeled_alternatives)}")
answer = labeled_alternatives[answer_label]
if answer == correct_answer:
NUM_CORRECT += 1
print("⭐ Correct! ⭐")
else:
print(f"The answer is {correct_answer!r}, not {answer!r}")
print(f"\nYou got {NUM_CORRECT} correct out of {num} questions")
결론
Python 코드 품질을 개선하는 데 사용되는 여러 도구가 있으며 Pylint가 그 중 하나입니다. 코드 품질 개선에 대한 자세한 내용은 here을 참조하십시오.
Reference
이 문제에 관하여(Pylint로 Python 코드 품질 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/immah/improve-python-code-quality-with-pylint-3ebl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)