The high-speed landing practice of Python Coding style guide
Machine and human strengths, such as coding style Check this can be self-active work should be handed over to the machine, so this article helps you in a few minutes to achieve the coding style of self-active inspection.
1. What are the famous Python Coding Style guide
https://www.python.org/dev/peps/pep-0008/
Invented the Python language monument character Guido van Rossum's personally written coding Style, visibility 5 stars, operable 5 stars.
- Google Python Coding Style Guide
Http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
Python is widely used within Google as a development language, and the coding Style is widespread. Visibility 5 stars, operability 5 stars.
It is worth mentioning that Guido also worked at Google for some time.
2.flake8-coding style Check
自己主动化
The weapon
You may have heard of PEP8. This is a PEP8
self-motivated tool that checks the Python code style according to the specification.
flake8
is to pep8
carry out the packaging, give full play to the advantages of plug-in. Added checks such as code complexity, functions, variable naming conventions, import order, and so on.
2.1 Installing Flake8
Install Flake8. Install some useful plugins at the same time.
Https://github.com/PyCQA/pep8-naming
Name Check
Https://github.com/public/flake8-import-order
Import Order check. Can have two styles of order check cryptography, Google. This google
means that the import order is (1) the standard library (2) third-party library (3) The local project library. Can be specified by a code check --import-order-style=google
.
Https://github.com/schlamar/flake8-todo
Check the Todo in the code.
https://github.com/zheller/flake8-quotes/
Check that the use of single and double cited is correct.
Detailed installation commands such as the following:
$ pip install flake8$ pip install pep8-naming$ pip install flake8-import-order$ pip install flake8-todo$ pip install flake8-quotes
Check which plugins are installed:
$ flake8 --version # output, such as the following, shows the installed plugins: 2.5 .1 (PEP8: 1.5 .7 , Import-order: 0.6 .1 , naming: 0.3 .3 , Pyflakes: 1.0 .0 , McCabe: 0.3 .1 , Flake8-todo: 0.4 , Flake8_quotes: 0.1 .1 ) CPython 2.6 .6 on linux
2.2 Checking Python Codes with Flake8
For example, the following code:
# test.py fromOrderImportPlace_orderImportOS, sys class website_api(object): def __init__(self):Self.user_name ="'Self. Gender =' Male ' #comment in wrong identSelf.active =False def login(self, person):Self.user_name=person.user_name Not_used_var =0 return True def Logout(self):Self.active =False def place_order(self):Place_order () def action():Client_a = Website_api () client_a.login () Client_a.place_order () Client_a.logout ()
Run the check command:
----import-order-style=google test.py
The output is as follows, you can fix the code based on the error code, as in the N802
meaning that function name should not include uppercase English letters.
# Flake8 Outputtest.py:2:1: F401' sys 'Imported but unusedtest.py:2:1: I100 Imports Statements isinch theWrong order. fromOS, SYS should bebefore fromordertest.py:2:1: I201 Missing NewLinebeforeSectionsorimports.test.py:2:Ten: E401 Multiple Imports on one linetest.py:4:7: N801 class names should use Capwords conventiontest.py:8:9: E265 block Comment should start with ' # 'test.py:9: A: E225 missing whitespace around operatortest.py: One:9: N803 argument name should be lowercasetest.py: -:9: F841Local variable ' Not_used_var 'is assigned toBut never usedtest.py: -:9: N802 function name should be lowercase test.py: at:5: N806variable inch function should be lowercase
Besides. Flake8 is also able to recursively check the code in a folder:
$ flake8 your_project_dir
Flake8 frequently used options are:
Show source code for each error
Show first occurrence of each error
- –import-order-style=google
Import order style to follow
Print total number of errors and warnings to standard error and set exit code to 1 if total is not null
Get help
2.3 Flake8 Warning/error Codes List
Codes |
Notes |
Link |
e***/w*** |
pep8 errors and warnings |
http://pep8.readthedocs.org/en/latest/intr O.html#error-codes |
f*** |
pyflakes codes (see below) |
https://flake8.readthe docs.org/en/latest/warnings.html |
c9** |
McCabe complexity, right now there are only C901 |
https: Github.com/pycqa/mccabe |
n8** |
PEP-8 naming conventions |
https://github.co M/pycqa/pep8-naming#plugin-for-flake8 |
i*** |
checks the ordering of your imports |
https://github.com/public/flake8-import-order#warnings |
t*** |
There is only T000 to check if the code includes TODO, Fixme |
Https://github.com/schlamar/flake8-todo |
q*** |
There are Q000 on behalf of single and double quotes using error |
https://github.com/zheller/flake8-quotes/ |
With the integration of the new Flake8 plugin, there may be other codes, assuming that your project has special code-checking requirements. You can also develop your own plugin.
2.4 Flake8 's Personalized configuration
Depending on the need, the Flake8 configuration can be global (valid for all project). can also be part of project. Here are just examples of global configuration methods. See Flake8 Per project configuration for project configurations.
Edit~/.config/flake8
[flake8]ignore = E201,E202,E302exclude = .tox,*.eggmax-line-length = 120
The above configuration means that Flake8 does not check E201, E202, E302 These three errors, does not check the. tox,*.egg file. The longest single-line code that is agreed on is 120 characters long.
2.5 Flake8 Advanced Use Method-Git Commit Hook
Flake8 can be combined with Git commit
to check the purpose of coding style, assuming Flake8 error, it is not possible commit
.
Run the following command to install the git pre-commit hook under the root folder of Python project.
$ flake8 --install-hook$ true
References
PEP8
https://www.python.org/dev/peps/pep-0008/
Google Python Coding Style
Http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
PEP8 Tools
Https://github.com/PyCQA/pep8
Flake8
https://flake8.readthedocs.org
Warning/error Codes of Flake8
Https://flake8.readthedocs.org/en/latest/warnings.html
The high-speed landing practice of Python Coding style guide