BackTrader学习日志01-第一个例子代码-1

第二天:
由于习惯了使用VS工具进行单步或逐句调试程序,所以先查了一下资料,使用pycharm是如何调试的:
在这里插入图片描述
在这里插入图片描述
其实本人还是喜欢用spider,可能是习惯问题:
在这里插入图片描述
例子还是用昨天的例子
在例子代码开头即是from xxx import xxx,其实这相当于C语言或其它语言的头文件包含的作用,在任何一种编程语言来说,任何函数都必须先定义或先声明后定义之后,才能被调用,python也不例外,所以需要用到什么东西,都需要先包含进来,而python中需要使用内置库也好,第三方库也好,都必须先导入。
这个“库”其实就是一些源码文件,如自己写个文件“Hello.py”
在这里插入图片描述
由于这个文件名,也就相当于后面需要导入的包名,与包中的函数名一致,如果在使用时,只写“import Hello”,默认导入的是整个包,而不是指的Hello函数
所以如果要使用里面的函数,调用方法即为:Hello.Hello()
在这里插入图片描述
如果一个包中包含多个函数(经常都是这样)
在这里插入图片描述
这样的话,我们可以整个包都导入,或者导入某些需要的函数,没有导入的函数即不可用,从下图可以看得出来,Hello1被执行之后,在Hello2被调用的时候才报错,也就证明了python的解释性语言的特性,也就是脚本语言的特性。
在这里插入图片描述
以上是大概的解释一下python中包的概念。
//*********************************************************下面开始例子中的代码逐句逐行来学习。
在这里解释一下为什么这么个小例子就需要逐句逐行来学习。由于本人读的是“英语教育”专业,回想以前学习英语单词的方法就是简单的“查字典”,碰到哪个单词不懂了,就去查,然后看英语的解释,如果解释中又有不懂的单词,则再去查,直到查到没有不认识的单词为止,这样的方法就相当于计算机中的迭代递归一样,方法是很笨,但很实用。由于Python语言本身没有系统的学习过,也在大概的看过一些教学视频而已,但总觉得这些视频都只注意一些语法上面,很少会讲得很透彻,所以也就放弃看这些视频了,所以现在这就是我想要做的,从BackTrader的说明手册开始,看懂里面的例子之后,要使用的话就不难了。so here we go .

**

from future import (absolute_import, division, print_function,unicode_literals)

**
absolute_import:顾名思义为:加入绝对引入这个新特性。
说到绝对引入,当然就会想到相对引入。那么什么是相对引入呢?
其实个个引入,可以理解成绝对路径和相对路径的区别,例如C/C++语言中的头文件包含一样,#include""与#include<>的区别就是头文件查找路径先后的问题而已,所以就不过多介绍了。

division:导入python未来支持的语言特征division(精确除法)。
当我们没有在程序中导入该特征时,"/“操作符执行的是截断除法(Truncating Division),当我们导入精确除法之后,”/"执行的是精确除法,如下所示:

3/4
0

from future import division
3/4
0.75
当我们导入精确除法后,若要执行截断除法,可以使用"//"操作符:

3//4
0
print_function:导入python未来支持的print函数。

python2.7

print “Hello world”

python3

print(“Hello world”)

unicode_literals:
① Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动。有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了
② 从python 2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用’xxx’表示str,Unicode字符串用u’xxx’表示unicode,而在3.x中,所有字符串都被视为unicode,因此,写u’xxx’和’xxx’是完全一致的,而在2.x中以’xxx’表示的str就必须写成b’xxx’,以此表示“二进制字符串”。
要直接把代码升级到3.x是比较冒进的,因为有大量的改动需要测试。相反,可以在2.7版本中先在一部分代码中测试一些3.x的特性,如果没有问题,再移植到3.x不迟。
③ Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。举例说明如下:
④ 为了适应Python 3.x的新的字符串的表示方法,在2.7版本的代码中,可以通过unicode_literals来使用Python 3.x的新的语法:在python3中默认的编码采用了unicode, 并取消了前缀u. 如果代码要兼容python2/3
所以,导入-from future import unicode_literals目的在于做版本的兼容性

**

import backtrader as bt

**
这句貌似不用解释了。

**

if name == ‘main’:

**
首先需要了解 name 是属于 python 中的内置属性,就是它会天生就存在于一个 python 程序中,代表对应程序名称。
比如所示的一段代码里面(这个脚本命名为 xxx.py),我只设了一个函数,但是并没有地方运行它,所以当 run 了这一段代码之后我们有会发现这个函数并没有被调用。但是当我们在运行这个代码时这个代码的 name 的值为 main (一段程序作为主线运行程序时其内置名称就是 main)。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值