第一章:Python基础知识回顾 — 变量、数据类型、列表、字典、函数定义

好,咱们开篇先不急着碰MA图。磨刀不误砍柴工,先把Python的老底儿翻一翻。这些基础东西,你越熟悉,后面写代码就越顺手。我见过太多同学,一上来就调库,结果变量类型都搞混,debug半天找不到北。

说白了,这章就是帮你把地基夯结实。咱们会快速过一遍:变量怎么玩、数据类型有哪些坑、列表和字典的骚操作、还有函数怎么定义才优雅。嗯,都是干货。

本章核心:用最短的时间,把后面画MA图需要的基础知识全部激活。别跳过,我保证有彩蛋。

1.1 变量 — 别给它起错名

变量就像盒子。你把数据放进去,贴个标签。Python的变量不需要提前声明类型,这点很方便,但也容易坑自己。

# 这就是一个变量
ma_period = 20
close_price = 185.50
name = "茅台"  # 字符串,别忘了引号

命名规则你得记牢:

  • 只能用字母、数字、下划线。数字不能开头。
  • 别用Python的关键字,比如if、for、while。
  • 我个人的习惯是:变量名要有意义。a、b这种,三个月后你自己都看不懂。

注意:Python是动态类型语言。变量可以随时换类型。我曾经在项目中遇到过,一个变量一开始是整数,后来被赋值为字符串,后面做计算直接报错。这类bug很难查。

# 别这么干
x = 10
x = "现在我是字符串了"  # 类型变了,后续代码容易炸

1.2 数据类型 — 搞清楚你是哪种料

Python常见的数据类型就那些。

类型 关键字 例子 你用在哪
整数 int 100, -5 股票数量、周期
浮点数 float 3.1415, 185.50 价格、均线值
字符串 str "MA5", '收盘价' 列名、标签
布尔值 bool True, False 条件判断

type()函数是好帮手。不确定类型?用它查一下。

price = 185.50
print(type(price))  # 输出:

避坑提醒:浮点数计算有精度问题。比如0.1 + 0.2并不等于0.3,而是0.30000000000000004。做金融计算时,得用Decimal或者四舍五入处理。我刚工作时在这上面吃过亏。

1.3 列表 — 你的数据大本营

列表是最常用的数据结构之一。它能装一堆东西,而且可以随时增删改查。

# 创建一个价格列表
prices = [180.5, 182.0, 185.5, 183.0, 186.5]

# 索引从0开始
print(prices[0])   # 180.5
print(prices[-1])  # 186.5,最后一个元素

# 切片 —— 取前3个
print(prices[:3])  # [180.5, 182.0, 185.5]

列表的常用操作:

  • append():末尾追加一个元素
  • insert():插入到指定位置
  • remove():删除指定值
  • len():获取长度
prices.append(188.0)  # 新增一个
print(len(prices))    # 输出 6

你想想看,MA图需要计算移动平均,其实就是对列表里的一段数据反复求平均值。列表不会用,后面寸步难行。

1.4 字典 — 给数据贴上标签

字典存的是键值对。说白了,就是“我叫什么,我是什么”。

# 存储一只股票的信息
stock = {
    "name": "贵州茅台",
    "code": "600519",
    "close": 185.50,
    "ma5": 183.20,
    "ma20": 180.10
}

print(stock["name"])   # 贵州茅台
print(stock.get("volume", "无数据"))  # 安全取值,没有就返回默认

字典的常用操作:

  • keys():获取所有键
  • values():获取所有值
  • items():同时获取键和值
  • update():合并另一个字典

我的经验:我习惯用字典来存储一条K线数据。日期、开盘、收盘、最高、最低、成交量,每个字段都是键,直观又好查。比用列表+索引的方式靠谱多了。

# 遍历字典
for key, value in stock.items():
    print(f"{key}: {value}")

1.5 函数定义 — 把你重复的工作打包

函数就是一段可以重复调用的代码块。定义一次,到处使用。

def calc_ma(data, period):
    """
    计算简单移动平均线
    :param data: 价格列表
    :param period: 周期
    :return: 移动平均值列表(前period-1个为None)
    """
    result = []
    for i in range(len(data)):
        if i < period - 1:
            result.append(None)  # 前面数据不够,补空值
        else:
            avg = sum(data[i-period+1:i+1]) / period
            result.append(round(avg, 2))
    return result

函数要点:

  • 用def关键字定义。
  • 参数可以有默认值,比如period=20。
  • 函数体要有缩进,Python靠缩进识别代码块。
  • 用return返回结果。没有return,函数返回None。

重要:我给函数加了解释文档(docstring)。这不是装样子,几个月后你回来看代码,没有注释的函数就像天书。我之前因为懒没写注释,后来改需求时把自己坑惨了。

试试调用上面的函数:

prices = [180, 182, 185, 183, 186, 188, 190]
ma5 = calc_ma(prices, 5)
print(ma5)
# 输出:[None, None, None, None, 183.2, 184.8, 186.4]

函数写好了,以后画MA图时直接调用就行。这就是封装的好处。

本章知识结构一览

下面这张SVG图,就是你学完本章后,脑子里应该装下的东西。每个模块都是后面画MA图的砖瓦。

第1章 Python基础回顾 · 知识结构图 Python基础知识 变量命名与赋值 数据类型 int/float/str/bool 列表的增删改查与切片 字典的键值对与遍历 函数定义与参数返回值 全部内容都为后续MA图计算与可视化做准备 重点:列表切片 + 函数封装

还记得我们为什么要学这些吗?

移动平均线(MA)本质上就是对价格列表做滑动窗口平均——列表切片是核心。字典用来存储K线数据。函数把计算逻辑封装起来。变量和类型帮你理清数据的来龙去脉。看吧,一环扣一环。

趁热打铁:打开你的Python环境,把上面这些代码都敲一遍。光看是不管用的。我当年学Python,第一天就把列表、字典、函数各写了20遍。手熟了,后面才快。