一. 命名规范
- 类: 采用
驼峰命名法
, 每个单词首字母大写,不使用_
-
ElectricCar
、Car
- 类的示例: 全部小写, 单词间使用
_
分割
-
my_dog
、my_new_car
- 函数: 全部小写,单词之间使用
_
分割 - 模块: 全部小写,单词之间使用
_
分割(命名方式可以采用: 动词_名词
方式)
-
function_name
、make_cookie
- 包名: 全部小写, 单词之间使用
_
分割
其他的请看:
GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name.
二. 导入格式
- import语句放在文件开头
- 唯一例外: 文件开头使用了注释来描述整个程序
- 不要使用
from module_name import *
来导入模块的每个函数 - 不要使用
from module_name import *
来导入模块的每个类
- 没有明确指出你使用了模块中的哪些类
- 还可能引发名称方面的困惑
- 导入模块中的类
- 如果导入的类不多, 可以分别导入
-
from car import Car, ElectricCar
- 使用的时候, 创建实例可以
my_tesla = ElectricCar('tesla', 2016)
, 直接使用导入的类即可
- 如果导入很多类, 则导入整个模块
- import car
- 导入整个模块, 访问指定类使用据点表示法
module_name.ClassName
, 例如: my_tesla = car.ElectricCar('tesla', 2016)
.代码行规范
- 代码行的长度不要超过
79
字符
- 函数定义的形参超过79字符: 函数定义中左括号后回车, 下一行按两次Tab键, 开始输入.
def function_name(
parameter_0, parameter_1, parameter_2,
parameter_3, parameter_4, parameter_5):
function body...
模块中多个类的代码编写格式模板
- 每个类应紧跟一个文档字符串(描述类的功能)
- 每个模块后面也应包含一个文档字符串(对其中的类可用于做什么进行描述)
- 类中,方法使用一个空行分隔
- 模块中, 使用两个空行分隔类
- 导入标准库中的模块和你编写的模块
- 先编写导入标准库模块的import语句, 添加一个空行, 再编写导入你自己编写的模块的import语句
car.py
"""一个用于表示汽车、燃油汽车和电动汽车的类"""
import requests
from car import Car
class Car(object):
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回整洁的描述性名称"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
"""打印一条消息,指出汽车的里程"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
"""将里程表读数设置为指定的值, 拒绝将里程表回拨
:param mileage: 设置的里程数
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
"""将里程表读数增加指定的量"""
self.odometer_reading += miles
class Battery(object):
"""一次模拟电动汽车电瓶的简单尝试"""
def __init__(self, battery_size=70):
"""初始化电瓶的属性"""
self.battery_size = battery_size
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a " + str(self.battery_size) + "-kWh battery.")
def get_range(self):
"""打印一条描述电瓶续航里程的消息"""
if self.battery_size == 70:
range = 240
elif self.battery_size == 85:
range = 270
message = "This car can go approximately " + str(range)
message += " miles on a full charge."
print(message)
class ElectricCar(Car):
"""模拟电动汽车的独特之处"""
def __init__(self, make, model, year):
"""
初始化父类的属性, 在初始化电动汽车特有的属性
"""
super().__init__(make, model, year)
self.battery = Battery()
参考资料:
- Python编程 从入门到实践 - Eric Matthes
- Google开源项目风格指南 - Python风格规范
- PEP 8-Python编码规范整理