Python 程序如何运行
Python 程序就是由语句组成的文本文件。Python 从上到下逐条执行语句,不需要任何固定模板:main.py 这个文件本身就是程序。点击 Run,或在终端输入 python main.py。
bid = 184.25
ask = 184.50
print(ask - bid) # 0.25语句与表达式
表达式会产生一个值,例如 ask - bid 或 2 * 3。语句会执行某个动作,例如 bid = 184.25 或 print(bid)。每条语句独占一行,行尾即语句结束,不需要分号。语句太长时,用括号括起来,在后续几行继续书写。
total_cost = (
price * quantity
+ commission
+ exchange_fee
)注释与文档字符串
从 # 到行尾的内容都是注释,Python 会忽略它。注释应该解释代码为什么这样做,而不是重复它在做什么。放在文件或函数开头的三引号字符串是文档字符串(docstring),工具和 help() 会把它显示为正式说明。
# Mid price: the fair value halfway between bid and ask.
mid = (bid + ask) / 2 # average of the two quotes缩进是语法的一部分
其他语言用花括号的地方,Python 用缩进。以冒号结尾的行会开启一个代码块,代码块就是它下面缩进的那些行。缩进请用四个空格,千万不要混用制表符和空格。顶格书写的代码属于最外层。
def spread(bid, ask):
# both lines below are the block: indented by four spaces
width = ask - bid
return width
print(spread(184.25, 184.50)) # back at the left margin: 0.25IndentationError,漏写冒号会触发 SyntaxError。Python 会在运行任何代码之前就停止,所以先看错误信息里的行号。请把编辑器设置为按 Tab 键时插入空格。变量与赋值
名称 = 值 会把一个名称绑定到一个值上。= 表示赋值而不是相等:Python 先计算右侧,再把名称指向结果。名称区分大小写,可以包含字母、数字和下划线,不能以数字开头,也不能是 if、for 这样的关键字。Python 的惯例是 snake_case,例如 last_price。
price = 184.25
quantity = 200
notional = price * quantity
price = 185.00 # rebinds price; notional is unchanged
quantity += 50 # shorthand for quantity = quantity + 50
print(notional) # 36850.0算术运算与运算符优先级
+、-、*分别是加、减、乘。/是真除法,结果总是小数:7 / 2等于3.5。//做除法并向下取整,%返回余数:7 // 2等于3,7 % 2等于1。**表示乘方:1.05 ** 10表示 5% 连续复利十次。
Python 遵循数学中的运算顺序:先算 **,再算 * 和 /,最后算 + 和 -。所以 2 + 3 * 4 等于 14,而 (2 + 3) * 4 等于 20。拿不准时就加括号:它没有任何代价,还能让意图一目了然。数字中的下划线(如 10_000)会被忽略,用来提高大数的可读性。
spread = ask - bid # 0.25
mid = (bid + ask) / 2 # 184.375
spread_bps = spread / mid * 10_000 # the spread in basis points用 print 显示结果
print() 会把值以空格分隔输出到终端。引号里的文字是字符串,字符串和数字会在后面的主题中深入讲解。现在,print 就是你观察程序内部的窗口:打印一个值,手工验证,然后继续。
print("bid", bid, "ask", ask)
print("mid", mid)在实验中,你只需要用本页讲过的内容(赋值、算术运算和括号)写几个小的价格公式。下一节:Python 如何存储数字,以及为什么 0.1 + 0.2 并不精确等于 0.3。
实验:评分内容
- 用
notional计算持仓价值25 分 - 用
midpoint求中间价25 分 - 用
spread计算买卖价差25 分 - 用
spread_bps以基点表示价差25 分