Created
March 2, 2024 04:06
-
-
Save enqtran/2079b43419fcd0c79691ebc4d075a561 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Descriptive: Naming Styles | |
There are a lot of different naming styles. It helps to be able to recognize what naming style is being used, independently from what they are used for. | |
The following naming styles are commonly distinguished: | |
b (single lowercase letter) | |
B (single uppercase letter) | |
lowercase | |
lower_case_with_underscores | |
UPPERCASE | |
UPPER_CASE_WITH_UNDERSCORES | |
CapitalizedWords (or CapWords, or CamelCase – so named because of the bumpy look of its letters [4]). This is also sometimes known as StudlyCaps. | |
Note: When using acronyms in CapWords, capitalize all the letters of the acronym. Thus HTTPServerError is better than HttpServerError. | |
mixedCase (differs from CapitalizedWords by initial lowercase character!) | |
Capitalized_Words_With_Underscores (ugly!) | |
There’s also the style of using a short unique prefix to group related names together. This is not used much in Python, but it is mentioned for completeness. For example, the os.stat() function returns a tuple whose items traditionally have names like st_mode, st_size, st_mtime and so on. (This is done to emphasize the correspondence with the fields of the POSIX system call struct, which helps programmers familiar with that.) | |
The X11 library uses a leading X for all its public functions. In Python, this style is generally deemed unnecessary because attribute and method names are prefixed with an object, and function names are prefixed with a module name. | |
In addition, the following special forms using leading or trailing underscores are recognized (these can generally be combined with any case convention): | |
_single_leading_underscore: weak “internal use” indicator. E.g. from M import * does not import objects whose names start with an underscore. | |
single_trailing_underscore_: used by convention to avoid conflicts with Python keyword, e.g. : | |
tkinter.Toplevel(master, class_='ClassName') | |
__double_leading_underscore: when naming a class attribute, invokes name mangling (inside class FooBar, __boo becomes _FooBar__boo; see below). | |
__double_leading_and_trailing_underscore__: “magic” objects or attributes that live in user-controlled namespaces. E.g. __init__, __import__ or __file__. Never invent such names; only use them as documented. | |
Function and Variable Names | |
Function names should be lowercase, with words separated by underscores as necessary to improve readability. | |
Variable names follow the same convention as function names. | |
Method Names and Instance Variables | |
Use the function naming rules: lowercase with words separated by underscores as necessary to improve readability. | |
Use one leading underscore only for non-public methods and instance variables. | |
Style: | |
Use 4 spaces per indentation level. | |
Limit all lines to a maximum of 79 characters. | |
For flowing long blocks of text with fewer structural restrictions (docstrings or comments), the line length should be limited to 72 characters. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment