문제

이 도구에 대한 피드백을 받고 싶습니다.

  • 특징;
  • 적응성;
  • 사용 편의성 및 학습 곡선.
도움이 되었습니까?

해결책

글쎄, 나는 약간 궁금하다. 그래서 나는 질문을 한 후 바로 3을 직접 테스트했다 ;-)

좋아, 이것은 매우 심각한 검토가 아니지만 여기에 내가 말할 수있는 것이 있습니다.

도구를 시도했습니다 기본 설정으로 다음 스크립트에서 (확인 규칙을 거의 선택할 수 있기 때문에 중요합니다) :

#!/usr/local/bin/python
# by Daniel Rosengren modified by e-satis

import sys, time
stdout = sys.stdout

BAILOUT = 16
MAX_ITERATIONS = 1000

class Iterator(object) :

    def __init__(self):

        print 'Rendering...'
        for y in xrange(-39, 39): 
            stdout.write('\n')
            for x in xrange(-39, 39):
                if self.mandelbrot(x/40.0, y/40.0) :
                    stdout.write(' ')
                else:
                    stdout.write('*')


    def mandelbrot(self, x, y):
        cr = y - 0.5
        ci = x
        zi = 0.0
        zr = 0.0

        for i in xrange(MAX_ITERATIONS) :
            temp = zr * zi
            zr2 = zr * zr
            zi2 = zi * zi
            zr = zr2 - zi2 + cr
            zi = temp + temp + ci

            if zi2 + zr2 > BAILOUT:
                return i

        return 0

t = time.time()
Iterator() 
print '\nPython Elapsed %.02f' % (time.time() - t)

결과적으로 :

  • PyChecker 모듈을 분석하기 위해 모듈을 컴파일하기 때문에 문제가됩니다. 코드가 실행되기를 원하지 않으면 (예 : SQL 쿼리를 수행합니다), 그것은 나쁘다.
  • PyFlakes 라이트로 여겨집니다. 실제로, 그것은 코드가 완벽하다고 결정했습니다. 나는 아주 심한 것을 찾고 있으므로 갈 것이라고 생각하지 않습니다.
  • PyLint 매우 말이 많았으며 코드 3/10을 평가했습니다 (OMG, 더러운 코더입니다!).

강력한 포인트 PyLint:

  • 매우 설명적이고 정확한 보고서.
  • 일부 코드 냄새를 감지하십시오. 이 특정 사례에서 OO 접근법이 쓸모가 없기 때문에 기능이있는 무언가를 쓰기 위해 수업을 삭제하라고 말했습니다. 내가 알고 있었지만 컴퓨터가 나에게 말할 것을 기대 한 적이 없다 : -p
  • 완전히 수정 된 코드가 더 빨리 실행됩니다 (클래스 없음, 참조 바인딩 없음 ...).
  • 프랑스 팀에 의해 만들어졌습니다. 좋아, 그것은 모두에게 플러스가 아니지만 나는 그것을 좋아한다 ;-)

단점 PyLint:

  • 일부 규칙은 정말 엄격합니다. 나는 당신이 그것을 바꿀 수 있고 기본값은 pep8과 일치한다는 것을 알고 있지만, 'seq in seq'를 작성하는 것이 범죄입니까? 3 글자 미만의 변수 이름을 쓸 수 없기 때문에 예입니다. 나는 그것을 바꿀 것이다.
  • 매우 말이 많습니다. 눈을 사용할 준비를하십시오.

수정 된 스크립트 (게으른 문 문자열 및 변수 이름 포함) :

#!/usr/local/bin/python
# by Daniel Rosengren, modified by e-satis
"""
Module doctring
"""


import time
from sys import stdout

BAILOUT = 16
MAX_ITERATIONS = 1000

def mandelbrot(dim_1, dim_2):
    """
    function doc string
    """
    cr1 = dim_1 - 0.5
    ci1 = dim_2
    zi1 = 0.0
    zr1 = 0.0

    for i in xrange(MAX_ITERATIONS) :
        temp = zr1 * zi1
        zr2 = zr1 * zr1
        zi2 = zi1 * zi1
        zr1 = zr2 - zi2 + cr1
        zi1 = temp + temp + ci1

        if zi2 + zr2 > BAILOUT:
            return i

    return 0

def execute() :
    """
    func doc string
    """
    print 'Rendering...'
    for dim_1 in xrange(-39, 39): 
        stdout.write('\n')
        for dim_2 in xrange(-39, 39):
            if mandelbrot(dim_1/40.0, dim_2/40.0) :
                stdout.write(' ')
            else:
                stdout.write('*')


START_TIME = time.time()
execute()
print '\nPython Elapsed %.02f' % (time.time() - START_TIME)

편집하다 :

Rudiger Wolf 덕분에 나는 발견했다 pep8 그것은 그 이름이 제안한 바를 정확하게합니다 : pep8 매칭. Pylint가하지 않은 몇 가지 구문 No-Nos를 발견했습니다. 하지만 PyLint PEP8과 구체적으로 연결되어 있지 않지만 흥미로운 것을 발견했습니다. 두 도구 모두 흥미롭고 보완 적입니다.

결국 패키지 또는 세트 튜틀을 통해 쉽게 설치하기 쉽기 때문에 출력 텍스트를 쉽게 체인하기 쉽기 때문에 둘 다 사용하겠습니다.

그들의 출력에 대한 약간의 아이디어를 제공하기 위해 :

pep8:

./python_mandelbrot.py:4:11: E401 multiple imports on one line
./python_mandelbrot.py:10:1: E302 expected 2 blank lines, found 1
./python_mandelbrot.py:10:23: E203 whitespace before ':'
./python_mandelbrot.py:15:80: E501 line too long (108 characters)
./python_mandelbrot.py:23:1: W291 trailing whitespace
./python_mandelbrot.py:41:5: E301 expected 1 blank line, found 3

파일린트:

************* Module python_mandelbrot
C: 15: Line too long (108/80)
C: 61: Line too long (85/80)
C:  1: Missing docstring
C:  5: Invalid name "stdout" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 10:Iterator: Missing docstring
C: 15:Iterator.__init__: Invalid name "y" (should match [a-z_][a-z0-9_]{2,30}$)
C: 17:Iterator.__init__: Invalid name "x" (should match [a-z_][a-z0-9_]{2,30}$)

[...] and a very long report with useful stats like :

Duplication
-----------

+-------------------------+------+---------+-----------+
|                         |now   |previous |difference |
+=========================+======+=========+===========+
|nb duplicated lines      |0     |0        |=          |
+-------------------------+------+---------+-----------+
|percent duplicated lines |0.000 |0.000    |=          |
+-------------------------+------+---------+-----------+

다른 팁

PEP8은 최근 PYPI에 추가되었습니다.

  • PEP8- 파이썬 스타일 가이드 체커
  • PEP8은 PEP 8의 일부 스타일 규칙에 대해 파이썬 코드를 확인하는 도구입니다.

이제 PEP8에 대한 코드를 확인하는 것은 매우 쉽습니다.

보다 http://pypi.python.org/pypi/pep8

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top