3、Python基础速通(上):变量与数据类型、列表与字典、条件判断与循环、函数定义

说实话,很多做量化的朋友,一开始都被Python吓住了。

觉得编程是程序员的事,自己搞金融的学不会。

我当年也是这么想的。直到有一天,我手动算了一下午的股票波动率,结果发现公式里有个括号写错了……

嗯,从那以后,我老老实实学了Python。

其实Python没那么玄乎。你想想看,它本质上就是个工具。就像计算器一样,只不过功能强大了点。

这一章,我带你把最核心的几个概念过一遍。不用背,理解就行。


一、变量与数据类型

变量是什么?说白了就是个“标签”。

你把数据放在内存里,然后贴个标签,方便以后找它。

# 这就是变量
stock_code = "AAPL"
price = 150.25
volume = 10000
is_bullish = True

Python里常见的数据类型,我列个表给你看:

类型 例子 说明
int(整数) 100, -5, 0 交易数量、持仓量
float(浮点数) 150.25, 3.1415 股价、收益率
str(字符串) "AAPL", "2024-01-15" 股票代码、日期
bool(布尔值) True, False 判断条件的结果
我的习惯:变量名尽量用英文,别用拼音。比如用 close_price 而不是 shoupanjia。不然代码写长了,自己都看不懂。

还有一个细节——Python是动态类型语言。什么意思?

就是你不需要提前声明“这个变量是整数还是字符串”。Python会自动判断。

x = 10      # 这时候x是整数
x = "hello" # 现在x变成了字符串
print(x)    # 输出 hello

这在写策略的时候特别方便。但也要小心——我在项目中遇到过,因为变量类型被意外改变,导致计算报错的情况。


二、列表与字典

做量化,你肯定要处理一堆数据。比如同时跟踪10只股票的价格。

这时候就需要“容器”来装它们。

列表(List)——有序的集合

# 一个股票代码列表
stocks = ["AAPL", "GOOGL", "MSFT", "AMZN"]

# 获取第一个元素
print(stocks[0])  # AAPL

# 添加新股票
stocks.append("TSLA")

# 列表长度
print(len(stocks))  # 5

列表的索引从0开始。这个初学者容易搞混。

我记得刚开始写策略时,想取第3只股票,结果写了 stocks[3],取到的是第4只……

注意:Python索引从0开始!stocks[0] 是第一个,stocks[1] 是第二个。

字典(Dict)——键值对存储

列表用数字做索引,但有时候用名字更方便。字典就是干这个的。

# 存储股票的最新价格
prices = {
    "AAPL": 150.25,
    "GOOGL": 2750.80,
    "MSFT": 330.15
}

# 获取苹果的价格
print(prices["AAPL"])  # 150.25

# 添加新数据
prices["TSLA"] = 700.50

# 检查是否存在
if "AAPL" in prices:
    print("苹果的价格已记录")

字典在量化里用得特别多。比如存储每个股票的历史数据、持仓信息、策略参数等等。


三、条件判断与循环

程序不是从头到尾傻跑一遍的。它需要“做决定”和“重复做某件事”。

条件判断:if / elif / else

price = 150.0
target = 155.0

if price > target:
    print("价格超过目标,考虑卖出")
elif price < target * 0.95:
    print("价格低于目标5%,考虑买入")
else:
    print("价格在合理区间,观望")

这里有个坑——Python用缩进来表示代码块,不是用花括号 {}

我曾经因为缩进不对,找bug找了半小时……

核心原则:同一层级的代码,缩进必须一致。一般用4个空格。

循环:for 和 while

做量化,你经常要遍历一堆股票,或者回测很多天数据。循环就是干这个的。

# 遍历股票列表
stocks = ["AAPL", "GOOGL", "MSFT"]
for stock in stocks:
    print(f"正在分析 {stock}...")

# 循环10次
for i in range(10):
    print(f"第{i+1}次迭代")

range(10) 生成0到9的数字。配合循环,可以控制重复次数。

while循环用得少一些,但有时候也很有用:

# 模拟等待价格触发
price = 100.0
target = 105.0

while price < target:
    price += 0.5  # 价格慢慢上涨
    print(f"当前价格: {price}")

print("目标价格已触发!")
避坑指南:用while循环一定要小心死循环。确保条件最终会变成False。我曾经写过一个策略模拟,忘记更新条件,结果程序跑了一整夜……

四、函数定义

写代码最怕重复。如果你发现自己在复制粘贴同一段逻辑,就该用函数了。

函数就是“把一段代码打包,起个名字,以后随时调用”。

def calculate_sma(prices, window):
    """计算简单移动平均线(SMA)"""
    if len(prices) < window:
        return None
    
    sma = sum(prices[-window:]) / window
    return sma

# 使用函数
daily_prices = [150, 152, 149, 155, 157]
sma_3 = calculate_sma(daily_prices, 3)
print(f"3日均线: {sma_3}")

函数的好处很明显:

  • 复用性——写一次,到处用
  • 可读性——calculate_sma() 比一堆数学公式好懂多了
  • 易维护——要改逻辑,只改函数内部就行

我个人习惯,每个函数只做一件事。如果一个函数超过20行,我就会想是不是该拆分了。

函数命名建议:用动词开头,比如 get_price()calculate_volatility()check_signal()。这样一看就知道是干什么的。

知识体系总览

这一章的内容,其实就围绕一个核心:用Python处理数据,做决策,重复执行

下面这张图,帮你理清它们之间的关系:

Python基础速通(上)知识体系 数据存储 变量 · 列表 · 字典 逻辑控制 条件判断 · 循环 代码组织 函数定义 变量:存储单个值 列表:有序集合 字典:键值对映射 if/elif/else:决策 for循环:遍历数据 while循环:条件重复 def:定义函数 参数传递 返回值 量化策略编程基础

说白了,这一章就是给你搭个架子。变量存数据,条件判断做决策,循环重复执行,函数把逻辑打包。

这四个东西组合起来,就能写出像模像样的量化策略了。


我的建议:别光看,动手敲一遍。把上面的代码复制到你的Python环境里跑一跑。改改参数,看看结果有什么变化。代码这东西,看十遍不如写一遍。

下一章,我们会继续深入。把字符串操作、文件读写、异常处理这些实战必备的技能补上。

到时候,你就可以开始写真正的量化分析脚本了。


专注资料整理