Olej писал(а): ↑22 ноя 2019, 18:18
Хороший обзор статических анализаторов кода Python:
Из этих анализаторов/трансформаторов кода мне симпатичен YAPF от Google ... пофигу мне неприязнь "рукопожатной" общественности к Google:
Код: Выделить всё
olej@ACER:~$ aptitude search yapf
p python-yapf - public modules for yapf (Python 2)
i A python3-yapf - public modules for yapf (Python 3)
p yapf - Python code formatter for different styles (Python 2)
i yapf3 - Python code formatter for different styles (Python 3)
Для YAPF есть Итернет-онлайн реализация, для реформатирования небольших текстов, или для ознакомления:
YAPF Online Demo:
Приятно, что YAPF позволяет выбрать для кода несколько стилей: pep8, google, chromium, facebook (на картинке использовался стиль pep8).
Исходный код был:
Код: Выделить всё
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
if len( sys.argv ) > 1: n = int( sys.argv[ 1 ] )
else: n = int( input( "число?: " ) )
try: # Python 2
factorial = lambda z: reduce( lambda x, y: x * y, range( 1, z + 1 ) )
print( "n={} => n!={}".format( n, factorial( n ) ) )
except NameError: # Python 3
import functools
factorial = lambda z: functools.reduce( lambda x, y: x * y, range( 1, z + 1 ) )
print( "n={} => n!={}".format( n, factorial( n ) ) )
YAPF предложил его видеть в таком виде:
Код: Выделить всё
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
if len(sys.argv) > 1: n = int(sys.argv[1])
else: n = int(input("число?: "))
try: # Python 2
factorial = lambda z: reduce(lambda x, y: x * y, range(1, z + 1))
print("n={} => n!={}".format(n, factorial(n)))
except NameError: # Python 3
import functools
factorial = lambda z: functools.reduce(lambda x, y: x * y, range(1, z + 1))
print("n={} => n!={}".format(n, factorial(n)))
Практически он поубирал пробелы после-перед функциональными скобками.