Py开发规范
编码
# -*- coding: utf-8 -*-
缩进
统一使用 4 个空格进行缩进
变量风格
# 类变量/常亮变量 `大写`
BASE_PATH = ''
# 驼峰格式/下划线格式
removeSectionx=''
remove_section=''
# 编写变量 贴近实际意义 , 变量名较长 备注上注释
注释
# 单行数据
"""
多行注释
"""
###########################
# 多行注释
###########################
导包
### 系统工具包
import re, os , cv2 #不推荐
#应该下面这种
import re
import os
import cv
########################
### 三方工具包
from PIL import Image
from PIL import ImageFilter
#推荐这种
from PIL import Image, ImageFilter
########################
### 项目内导包
1. 相对路径导包(相对项目路径), 少用绝对导包
from .xxx import timmer
### 文件夹内包含 python代码, 一定要有 __init__.py文件
### 包名 格式
1. 不与文件名一致
2. 包名贴合实际意义
函数名字
# 尽可能使用下划线拼接函数名
def remove_async_task_result():
pass
函数参数
固定函数(单一功能函数) 指定参数
def gen_hash_key(args, user_id):
pass
函数功能复杂,且变量具有动态变换,使用万能传参
def get_save_tif_path(*args, **kwargs):
pass
类
1. 类 声明
1.1 驼峰格式 (首字母大写)
1.2 object类继承 强制性(适配py2语法)
1.3 命名具有实际意义
class MySQLDbTool(object):
2. 注意 静态函数 , 类函数 ,私有函数使用
@classmethod
def cls_method(cls):
pass
@staticmethod
def static_method():
pass
def _private_method():
pass
计算符号
a = a+1 # 不推荐
a+=1 # 推荐
换行符使用
\ # 当代码过长时,调整代码结构
.join(SatelliteParameter, SatelliteParameter.sensorid == cls.sensor_id)\
.join(SatelliteInfo, SatelliteInfo.id == SatelliteParameter.sid)\
.filter(*filter_condition).order_by(cls.sensor_id, cls.id).all()
上下文管理
# 1. db连接 , 文件读写 使用 with 语句管理
with open("file_name","r",encoding="utf-8") as f:
pass
# 2. with 语句 可作用于 对象 , 类中中必须包含 __enter__ 和 __exit__
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
pass
未完成事件管理
# todo pycharm 提供工具
循环
# for 循环嵌套 , 尽量不超过 两~三 层
字符串拼接
1. f"{imperative}~{expletive}"
2. "{}{}".format(imperative, expletive)
3. '%s, %s!' % (imperative, expletive)
文件路径
# os 模块
1. os.path.join() 文件路径拼接
2. os.path.abspath(__file__) 获取当前文件绝对路径
3. os.path.basename('路径') 获取文件名
4. os.path.exists(algorithm_path) 是否存在
5. os.makedirs(algorithm_path) 创建文件目录
内置函数
# 提高python处理数据效率
map
reduce
filter
sorted
....
匿名函数
lambda 匿名函数, 结合内置函数使用
sorted()
表达式
[i for i in range(1,9)]
[i for i in range(1,9)]
{i for i in range(1,9)}
{i:i for i in range(1,9)}
常用数据类型
字典 常使用 get形式取值, 关键字取值容易导致程序中断