Python 命名规范学习笔记

423 阅读5分钟

一、常见的命名规范

1、驼峰命名法(CamelCase)

混合使用大小写字母来构成变量和函数的名字,又分为以下几种

1)小驼峰命名法 (lowerCamelCase)

除第一个单词外,其他单词首字母大写。方法名,参数名,成员变量,局部变量需要使用(lowerCamelCase).例:

getUserInfo
taskRepository
findAllByUserInfo

2) 大驼峰命名法(CamelCase)

所有单词首字母大写 常用于类名,命名空间 例:

class TaskDateToSend{}
class TaskLabelToSend{}
SettingRepository 

2、蛇形命名法(snake_case)

蛇形命名法全由小写字母和下划线租车,两个单词之间用下划线连接。测试方法名、常量、枚举名称需要使用。例:

first_name
last_name
LEARNING_RATE //全大写 常量

3、串式命名法(kebab-case)

各单词间通过划线“-”连接,文件夹等使用。 也有其他的命名规则,但目前这几个对我来说够用了

二、 语言场景

不同的编程语言,使用的命名规则也是不一样的,所以需要具体区分。

Python 命名规范

Python 推荐使用蛇形命名法,但有一些细小的规定。

:使用首字母大写单词串(大驼峰命名法),MyClass,ClassName.内部的类可以使用额外的前导下划线以区分_MyClass 函数和方法:小写+下划线 (蛇形命名法),method_name 函数参数 :小写+下划线(蛇形命名法)function_parameter_name.如果函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线,如random_

保留关键字指语言内部已经定义并有特定含义的单词,不能用作标识符(如变量名、函数名等),这些关键字是 Python 语法的一部分,用于表示控制结构、数据类型、操作符等,比如,if,else,for 等语法 例

def create_class(class_, name):
    #创建一个类并返回它的字符串表示
    return f"The class {class_} is named {name}."
    # 调用函数
result = create_class("Math101", "Algebra")
print(result)
The class Math101 is named Algebra.

全局变量 对于from M import 导入语句如,果想阻止导入模块内的全局变量可以使用旧有的规范,在全局变量上加一个前导的下划线,如_var_name。应避免使用全局变量 变量 小写,下划线连接各个单词(蛇形命名法),color_device,this_is_a_variable.

Attentation: 1.不论是类成员还是全局变量,都不使用m_或g_前缀,,m可能代表member,g可能代表global,为防止误解所以不允许使用m_或g_前缀

class MyClass:
    def __init__(self, name, age):
        self.name = name  # 使用下划线而不是 m_name
        self.age = age    # 使用下划线而不是 m_age

2.私有类成员使用单一下划线前缀标识 1)告知其他开发者该成员是内部使用的,不建议外部访问。2) 提供一定的封装性。3)方便沟通,使用 self._my_private_var 可以让其他开发者清楚该变量是“私有”的,而 self.my_public_var 则是公开的,可以自由访问

class MyClass:
    def __init__(self):
        self._counter = 0  # 私有成员

    def increment(self):
        self._counter += 1
        print(self._counter)

obj = MyClass()
obj.increment()  # 推荐通过公开方法访问
print(obj._counter)  # 虽然可以访问,但不推荐这样做

3.变量名不应带有类型信息,因为Python是动态类型语言。如 iValue、names_list、dict_obj 等都是不好的命名

常量:常量名所有字母大写,下划线连接所有单词。SPEED,NUMBER_TOTAL 异常:以Error作为后缀 文件名:全小写,可用下划线 包(Package) :简短的,小写的名字,如需要可加下划线,如mypackage 模块(Module) :与Package相同,mymodule“ 缩写:命名单词尽量全拼,缩写分两种: 1.常用缩写,XML,ID,在命名时也应只大写首字母如,XmlParser 2.含有长单词,对某单词缩写,按约定俗称的缩写方式 function缩写为fn text缩写为txt object缩写为obj count缩写为cnt number缩写为num 前缀后缀下划线 一个前缀下划线:表示非公有 一个后缀下划线:避免关键词冲突 两个前缀下划线:命名类属性引起名称冲突时使用 两个前缀和后缀下划线:魔法方法”(magic methods),这些方法是 Python 语言中预定义的一些特殊方法,通常由 Python 内部系统使用,或者由某些特定的功能实现(如类的运算符重载、对象生命周期管理等)。例如,init 是一个常见的构造函数,而 str 用于定义对象的字符串表示。绝对不要创造这样的名字。只需要使用它们。

    def __init__(self, value):
        self.value = value

    def __str__(self):
        return f"MyClass with value {self.value}"

    def __add__(self, other):
        return MyClass(self.value + other.value)

    def __len__(self):
        return len(str(self.value))

# 使用魔法方法
obj1 = MyClass(5)
obj2 = MyClass(10)

print(str(obj1))  # 调用 __str__(),输出:MyClass with value 5
print(obj1 + obj2)  # 调用 __add__(),输出:MyClass with value 15
print(len(obj1))  # 调用 __len__(),输出:1

特定命名方式:xxxx形式的系统保留字命名法。项目中也可以使用这种命名,意义在于这种形式变量是只读的,这种形式的类成员函数尽量不要重载

    def __init__(self, id, parent=None):
        self.id = id          # 只读变量,标识对象的 ID,不应该被修改
        self.parent = parent  # 只读变量,表示该对象的父级,不应该被修改

    def message(self, msgid):
        print(f"Message ID: {msgid}")

参考博客10分钟了解代码命名规范(Java、Python)