风格指南
语言规范

任何代码语言都有代码规范,有了规范才能让我们写出清晰易读易懂的代码,以下列出 PythonGO 的语言规范,实际上就是 Python 的语言规范。

代码编辑器统一使用 Visual Studio Code (opens in a new tab)

导入

正常情况下,导包使用 import 语句

import pythongo
 
pythongo.utils.KLineGenerator(...)

可以适当使用 from 语句来省略太长的包名

from pythongo import utils
 
utils.KLineGenerator(...)

或者直接导入包中的对象

from pythongo.utils import KLineGenerator
 
KLineGenerator(...)

导入顺序

按照如下导入顺序来编写你的 import 语句, 标准库 -> 第三方库 -> 本地库,例如:

# 标准库
import os
from datetime import datetime
 
# 第三方库
import requests
 
# 本地库
import pythongo

注意事项

严格禁止使用星号 * 导入

from pythongo import *

缩写导入只适用于库的缩写是约定俗成的,比如 numpypandas,其他所有库都不建议使用缩写导入

import numpy as np
import pandas as pd

异常

任何报错都有解决方法,对于 try / except 语句要严格控制使用频率。

True / False 的求值

Python 在计算布尔值时会把一些值视为 False。简单来说,所有的「空」值都是假值。 因此, 0, None, [], {}, "" 作为布尔值使用时相当于 False

当我们判断一个值 foo 是否为 True 或者 False 时,可以直接使用 if foo:

但是当值 foo 可能为 None 值时,一定要使用 if foo is None:(或者 is not None)来判断 None 值,因为在某些情况下,0 值并不代表 False

当你想条件为 False 时进入判断,应该写成

if foo is False:
    # do something

因为这样明确了当 foo 值或结果为 False 时才进入 if 判断,不会造成歧义。

类型注释

由于 Python 是动态语言,一个变量被赋值后,运行时可以改变该变量的类型,所以有时候当变量的类型被改变后,我们的编辑器不能识别该变量的类型,导致无法使用编辑器的函数自动补全功能。

而在新版本的 Python 中,我们可以通过类型注释来实现给每个变量定义一个类型,提高代码可读性和可维护性。

以下代码告诉我们 foo 函数需要传入两个 int 类型的参数 ab,函数返回的结果也是 int 类型

def foo(a: int, b: int) -> int:
    return a + b

编写类型注释是一个非常好的习惯,更具体的类型注释文档可以查看 官方文档 - 对类型提示的支持 (opens in a new tab),或者网上搜索相关内容。