|
摘要- python是什么
- python的基础语法
- 变量与赋值
- Python 保留字符
- 打印 print
- 全局变量
- 基本数据类型-数字与字符串
- 算术运算
- 查看数据类型 type
- 数据类型-列表与字典
python是什么
python的基础语法- 大小写敏感
- 比较容易理解,就是字母的大写与小写是区分的,所以如果你把前文例子的代码中的若干个字母从小写变成大写,系统会报错。
- 要用英文符号
- 之前讲过,冒号、逗号、分号、括号、引号等各种符号必须用英文的,中文的会不识别而报错。
注释 - 为了让代码的便于交流理解,通常都会在代码中写入注释用以说明代码,注释是给人看的,所以计算机会忽略(顺便提下,空行也会被忽略),用中文记录思路也没关系。强烈建议养成写注释的好习惯。注释的方法有二:
(#)会把所在行的其后的所有内容设定为注释,如下 - # 注释样例
- # 这是一一个每天买平安银行的策略
- # 初始化
- def initialize(context):
- run_daily(period,time='every_bar')
- # 设定要买入的股票是平安银行
- g.security = '000001.XSHE'
- # 周期循环
- def period(context):
- #买入100股平安银行
- order(g.security, 100)
复制代码- 三个单引号(''')或三个双引号(""")会把之间的内容设定为注释,以单引号为例如下:
- '''
- 注释样例
- 这是一一个每天买平安银行的策略
- 是我写的:)
- '''
- '''初始化'''
- def initialize(context):
- run_daily(period,time='every_bar')
- g.security = '000001.XSHE'
- '''周期循环'''
- def period(context):
- '''买入100股平安银行'''
- order(g.security, 100)
复制代码行与缩进
一条语句写在多行 - # 用法: 变量名 = 数据或变量
- a=1
- b='你好'
- # 把a中的数据1赋值给了c
- c=a
- # 把b中的数据'你好'赋值给了a,此时a中的1被替换了
- a=b
复制代码
- # 用法: print(变量名)
- a=1
- print(a)
- b='你好'
- print(b)
复制代码
如下图,把代码放到周期循环里后,点编译运行执行代码,每个交易日都打印了a、b,因为运行了两个交易日,所以打印了2组a、b。注意,后面的例子都可以这个方法来执行。
print也可以直接打印数据,如下
- # 用法: print(数据)
- print(1)
- print('你好')
复制代码
为了能在日志中看出打印内容的含义,可以采用如下方法,此方法经常用于记录策略的运行情况。
- # 用法:print("说明、解释等,用%s表示变量的位置" % (变量或数据))
- a=1
- b='hello'
- print("a=%s" % (a))
- print("b=%s" % (b))
- print("%s是你好的意思" % (b))
- #\n是在所在位置换行的意思,能让日志在日期信息的下一行开始打印
- print("\na=%s" % (a))
- # 用之前的方法执行后结果如下:
- 2016-06-01 09:30:00 - INFO - a=1
- 2016-06-01 09:30:00 - INFO - b=hello
- 2016-06-01 09:30:00 - INFO - hello是你好的意思
- 2016-06-01 09:30:00 - INFO -
- a=1
复制代码
全局变量
报错信息如下,含义是a没有被定义
- NameError: global name 'a' is not defined
复制代码
为了让变量能在全局被使用,需要在变量前加'g.',使之成为全局变量。所以,把刚刚的代码中的a改为全局变量就能正确运行了。
- def initialize(context):
- run_daily(period,time='every_bar')
- g.a=1
- def period(context):
- print(g.a)
复制代码
基本数据类型-数字与字符串
- a = 3 # 整数
- b = 3.1415 # 浮点数
- c = True # 布尔值
复制代码
字符串(String)
- # 其中三引号可以由多行组成来编写多行文本
- a = '九歌'
- b = "袅袅兮秋风"
- c ="""袅袅兮秋风,
- 洞庭波兮木叶下。
- ——屈原《九歌》"""
复制代码
算术运算数字变量之间是可以进行算术运算的,如下: a=[color=inherit !important]3.0 b=[color=inherit !important]2.0
- 为了查看结果我用了print打印
- # 加
- print("a+b=%s" % (a+b))
- # 减
- print("a-b=%s" % (a-b))
- # 乘
- print("a*b=%s" % (a*b))
- # 除
- print("a/b=%s" % (a/b))
- # a除以b的商的整数部分
- print("a//b=%s" % (a//b))
- # a的b次幂,即指数运算
- print("a**b=%s" % (a**b))
- # a除以b的余数,即取余运算,为了打印“%”百分号要用两个百分号代表“%”百分号
- print("a%%b=%s" % (a%b))
复制代码- # 用之前的方法执行后结果如下,日期信息省去了
- a+b=5.0
- a-b=1.0
- a*b=6.0
- a/b=1.5
- a//b=1.0
- a**b=9.0
- a%b=1.0
复制代码 注意如果两个整数类型进行计算,结果默认还是整数。如下:
- # 这样写没有.0,系统会默认当成整数
- a=3
- b=2
- # 为了查看结果我用了print打印
- # 加
- print("a+b=%s" % (a+b))
- # 减
- print("a-b=%s" % (a-b))
- # 乘
- print("a*b=%s" % (a*b))
- # 除
- print("a/b=%s" % (a/b))
- # a除以b的商的整数部分
- print("a//b=%s" % (a//b))
- # a的b次幂,即指数运算
- print("a**b=%s" % (a**b))
- # a除以b的余数,即取余运算,为了打印“%”百分号要用两个百分号代表“%”百分号
- print("a%%b=%s" % (a%b))
- # 用之前的方法执行后结果如下,日期信息省去了
- a+b=5
- a-b=1
- a*b=6
- a/b=1 # 3/2=1.5 .5被省略了
- a//b=1
- a**b=9
- a%b=1
复制代码
查看数据类型 type
数据类型-列表与字典
选取list中的一段的用法如下:
- # 方法: list类型的变量[起点索引:终点索引]
- # 起点索引省略则默认为0
- # 终点索引省略则默认为最后的索引
- # 注意此时的结果仍是一个list
- c=[1,2,3,4]
- # 为了看到结果我们用print打印
- print(c[2:3])
- print(c[:-1])
- print(c[3:])
- print(c[:])
- # 执行后结果如下:
- [3]
- [1, 2, 3]
- [4]
- [1, 2, 3, 4]
复制代码
字典(dictionary) - 字典数据类型同样能方便我们操作一组数据,与list不同的是我们可以为这组数据自定义地建立索引。
建立方法如下: - # 建立方法: 变量名={索引名:数据,索引名:数据,....}
- # dict中的索引也叫键(key),数据也叫值(value)
- a={'平安银行':'000001.XSHE','浦发银行':'600000.XSHG'}
- b={'开盘价':10.0,'收盘价':11.0,'涨跌幅':0.10}
复制代码选取dict中的某个key的值方法如下: - # 选取方法 dict类型的变量[key]
- a={'平安银行':'000001.XSHE','浦发银行':'600000.XSHG'}
- # 为了看到结果我们用print打印
- print(a['平安银行'])
- # 执行后结果如下:
- 000001.XSHE
复制代码选取dict中的所有key与所有value
- # 选取dict中的所有key: dict类型变量.keys()
- # 选取dict中的所有value: dict类型变量.values()
- # 注意返回的结果是list类型的
- a={'平安银行':'000001.XSHE','浦发银行':'600000.XSHG'}
- b=a.keys()
- c=a.values()
- # 为了看到结果我们用print打印
- print("a.keys()=%s" % (a.keys()))
- print("b=%s" % (b))
- print("c=%s" % (c))
- # list中的中文难以正常显示,需如下这样单独打印
- print("b[0]=%s" % (b[0]))
- # 执行后结果如下:
- a.keys()=['\xe5\xb9\xb3\xe5\xae\x89\xe9\x93\xb6\xe8\xa1\x8c', '\xe6\xb5\xa6\xe5\x8f\x91\xe9\x93\xb6\xe8\xa1\x8c']
- b=['\xe5\xb9\xb3\xe5\xae\x89\xe9\x93\xb6\xe8\xa1\x8c', '\xe6\xb5\xa6\xe5\x8f\x91\xe9\x93\xb6\xe8\xa1\x8c']
- c=['000001.XSHE', '600000.XSHG']
- b[0]=平安银行
- # 可以看到,list中的中文难以正常显示。
- # 而且结果都是list(有中括号)
复制代码
|
|