Hello everyone, today I would like to introduce some convention to help you write more beautiful Python code, or by calling Python programmers: Pythonic.
The official Python code writing standard is PEP 8 (Python Enhancements Proposal8) 0- style guide. These standards are quite a lot, I summarize below some typical standards as follows:
1. Line spacing and indentation
You should use 4 spaces in each indent layer. If your line is too long (> 79 or> 119 characters depending on where), you can split it into more lines. Note that elements that are carriage return should be arranged vertically with the elements on the line above:
For example:
It’s correct
1 2 3 4 5 | func <span class="token operator">=</span> this_is_a_long_function <span class="token punctuation">(</span> horse <span class="token punctuation">,</span> unicorn <span class="token punctuation">,</span> beetle_bug <span class="token punctuation">,</span> giant_whale <span class="token punctuation">)</span> |
Wrong
1 2 3 4 | func <span class="token operator">=</span> this_is_a_long_function <span class="token punctuation">(</span> horse <span class="token punctuation">,</span> unicorn <span class="token punctuation">,</span> beetle_bug <span class="token punctuation">,</span> giant_whale <span class="token punctuation">)</span> |
You can also add 4 space characters (equivalent to one more indent) to distinguish parameters from other elements in the function.
It’s correct
1 2 3 4 5 6 7 | <span class="token keyword">def</span> <span class="token function">this_is_a_long_function</span> <span class="token punctuation">(</span> horse <span class="token punctuation">,</span> unicorn <span class="token punctuation">,</span> beetle_bug <span class="token punctuation">,</span> giant_whale <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword">pass</span> |
Wrong
1 2 3 4 5 6 | <span class="token keyword">def</span> <span class="token function">this_is_a_long_function</span> <span class="token punctuation">(</span> horse <span class="token punctuation">,</span> unicorn <span class="token punctuation">,</span> beetle_bug <span class="token punctuation">,</span> giant_whale <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword">pass</span> |
2. Using Tab or Space?
In Python, Space (space) takes precedence. Tab mark should be used in cases where the code has already used Tab. * Note: Python 3 does not allow to use Tab and Space mixed in the same file.
3. Line break before or after operator?
This is actually still controversial, but some Python programmers prefer a newline after the operator to match the mathematical representations:
1 2 3 4 5 6 | <span class="token builtin">sum</span> <span class="token operator">=</span> <span class="token punctuation">(</span> number_1 <span class="token operator">+</span> number_2 <span class="token operator">+</span> number_3 <span class="token operator">+</span> number_4 <span class="token punctuation">)</span> |
4. Blank line
You should wrap the definition of def
and Class
with the above parts with two blank lines, and the methods in Class
should have one empty line apart.
5. Import
Each line should only import 1 library.
For example:
It’s correct:
1 2 3 | <span class="token keyword">import</span> flask <span class="token keyword">import</span> app |
Wrong:
1 2 | <span class="token keyword">import</span> flask <span class="token punctuation">,</span> app |
However, if you import 2 sub-modules from a library, you can import in one line.
1 2 | <span class="token keyword">from</span> Flask <span class="token keyword">import</span> flask <span class="token punctuation">,</span> app |
import
statements should be placed at the beginning of the file, before you declare modules and variables / constants.
You should group import statements in the following order:
- Standard libraries like os, sys
- 3rd party libraries
- Local modules / libraries
6. Use spaces
You should avoid extra spaces in the following situations:
- Right inside brackets.
It’s correct:
1 2 | foo <span class="token operator">=</span> <span class="token punctuation">(</span> bar <span class="token punctuation">,</span> buz <span class="token punctuation">)</span> |
Wrong:
1 2 | foo <span class="token operator">=</span> <span class="token punctuation">(</span> bar <span class="token punctuation">,</span> buz <span class="token punctuation">)</span> |
- After the comma and before the closing parenthesis
It’s correct:
1 2 | foo <span class="token operator">=</span> <span class="token punctuation">(</span> bar <span class="token punctuation">,</span> <span class="token punctuation">)</span> |
Wrong:
1 2 | foo <span class="token operator">=</span> <span class="token punctuation">(</span> bar <span class="token punctuation">,</span> <span class="token punctuation">)</span> |
- Immediately before a comma, semi-colon, or two dots
It’s correct:
1 2 | <span class="token keyword">if</span> a <span class="token keyword">is</span> <span class="token boolean">True</span> <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> x <span class="token punctuation">,</span> y <span class="token operator">=</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> |
Wrong:
1 2 | <span class="token keyword">if</span> a <span class="token keyword">is</span> <span class="token boolean">True</span> <span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> x <span class="token punctuation">,</span> y <span class="token operator">=</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> |
Only one space is required for each variable assignment
It’s correct:
1 2 3 4 | foo <span class="token operator">=</span> <span class="token number">1</span> bar <span class="token operator">=</span> <span class="token number">2</span> this_is_a_really_long_name <span class="token operator">=</span> <span class="token number">3</span> |
Wrong:
1 2 3 4 | foo <span class="token operator">=</span> <span class="token number">1</span> bar <span class="token operator">=</span> <span class="token number">2</span> this_is_a_really_long_name <span class="token operator">=</span> <span class="token number">3</span> |
7. Naming way
- The Class and Exception names should capitalize every first letter of the word
1 2 | Class SomeExampleClass |
- Function and variable names should be lowercase and separate words with _
1 2 | def some_example_function |
- Constant names should be all capitalized
1 2 | CONSTANT_STRING = "STRING" |
Those are some of the most basic conventions that will help you write Python code, thanks for your reading. We will return to this topic in a future article. If you want, you can read more here .