语法规范

1. 模块导入规范

按照 标准库、扩展库、自定义库 顺序依次导入, 若库中只使用了少量函数, 可以单独导入函数名以加快程序运行速度

import package          # 导入模块
import package as pack # 导入模块, 并命名为 pack
from package.subpackage import subsubpackage as sp
from package import * # 导入模块中所有函数

# 导入其他文件夹中的模块, 先添加环境变量
import os
os.sys.path.append(r'路径')
import package

2. 使用规范的驼峰命名法

驼峰命名使用大写字母以区分不同的单词

(1) 转换类用2代替

用2代替to: str2list

(2) 缩写类只保留第一位大写

如: HTML and CSS 使用 HtmlAndCss, GUI element 使用 GuiElement

(3) 类名使用首字母大写, 函数名使用首字母小写

(4) 除了常量和枚举值, 不要使用下划线“\_”

区分类的私有属性、私有方法

(5) 常量使用大写字母

如: MAX_PARAMETER_COUNT = 100

(6) 同一个变量名只用于一个用途, 不要循环覆盖

3. 语法规范

(1) 过长语句使用续行符 ‘\’

(2) 根据运算特点选择最合适的数据类型

优先考虑使用 集合、字典 -> 元组 -> 列表、字符串

  • 频繁遍历, 使用元组或集合
  • 频繁测试某一个元素是否存在一个序列中, 且不关心位置, 使用字典或集合 (in 对于列表和元组是线性时间, 而对于集合和字典是常数级时间, 与规模无关)
  • 所有数据类型中, 列表功能最强大, 但是开销也最大, 运行速度最慢

(3) 利用逻辑运算符 and、or、not 惰性求值特点

Bool1 and Bool2 相当于

Bool1 if not Bool1 else Bool2 

运算符 and 和 or 并不一定会返回 True 或 False, 而是得到最后一个表达式的值, 以 and 为例, 若 Bool1 判断为 False 则无论 Bool2 是True 还是 False, 都不会影响结果, 因此, 程序不会计算 Bool2 的值. 合理安排逻辑顺序能提高代码运行速度.

使用惰性运算特点实现进制转换

def conversion(origin, originN, objectN=10):
assert isinstance(origin,str) and origin.isdecimal(),'输入的 origin 必须是纯字符串数字格式'
assert isinstance(originN,int) and isinstance(objectN,int),'输入的 originN 和 objectN 必须是大于1的整数'
def decimal2N(decimal, objectN):
return ((decimal == 0) and "0") or (decimal2N(decimal // objectN, objectN).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[decimal % objectN])
return decimal2N(int(origin, originN), objectN)

conversion('1713652', 8, objectN = 3)
>>> '221021112211'

4. python 有三种基本储存格式, .py, .pyc, .pyw

.py 是标准程序文件, .pyc 是编译加密文件, .pyw 是无界面可执行程序文件

$$
\text{.pyw}\stackrel{无界面}{\longleftarrow}\text{.py}\stackrel{编译}{\longrightarrow}\text{.pyc}\notag
$$

在 python 中, 使用 _ 表示上次一控制台输出的结果(相当于 matlab 的 ans)

标签

发表评论

回复 TB 取消回复

Comment List(2)

  • TB

    2024.8.14 14:08

    asdf

    Reply
  • TB

    2024.8.14 14:08

    我可以评论吗?

    Reply