1.默认可变对象

上图中,我们定义了addElement函数,在函数的形参中,我们默认使用了可变对象list。当我们连续的使用默认参数调用addElement函数时,可以发现list1只被创建了一次。由于list属于python中的可变对象,因此只在函数被定义的时候才能被创建一次,所以在调用的时候都使用的创建好的同一个list列表。而对于不可变对象,情况就不同了,如下图所示。

对于不可变对象,程序在调用函数时,将不可变对象作为默认参数进行调用。那么我们如何解决这个问题呢,我们可以利用不可变对象进行判断解决,程序如下图所示。

我们利用条件判断,list1是否为None,来决定是否创建新的列表,以此来解决上述的问题。

2.浅拷贝和深度拷贝问题

上述程序中,我们创建了字典dict1。并通过浅拷贝将dict1拷贝给dict2,通过copy库中的deepcopy(深拷贝)将dict1拷贝给dict2。可当删除dict2中的键值为’2’中的子对象的元素后,dict1中的对应元素也被删除了,而dict3却还保留。这就是浅拷贝和深拷贝的区别。如下图所示。

浅拷贝只是拷贝了父对象,但是对于子对象还是引用的同一个对象。而对于深拷贝,则是完全将子对象和父对象拷贝了一份出来,各自都有独立的子对象。

3.切记不要用官方库文件名来命名自己的文件

这里的官方库指的是大家需要import的库,这里小编统称为官方库。如下图所示。

小编创建了一个py文件,并命名为numpy。当小编想要调用大名鼎鼎的“numpy”时,此时程序报了找不到属性的“array”的错误。原因就是小编将自己的py文件命名为了numpy,程序便会自动的在当前文件里面找“array”这个属性。结果可想而知,当然找不到啦,所以小编提醒大家,千万不要将自己文件的名称与官方库撞名,不然会出大问题。

4.学会迭代器的使用

Python作为一个非常方便快捷的语言,很多元素都具有可迭代性,我们要充分利用好这些性质,如下图所示。

我们想要对list对象中的所有元素执行addOne函数,传统的也是标准的方法是利用for循环来实现,就如第一种方法。但是由于list对象是可迭代对象,我们完全可以利用好这个优势,一行代码就搞定这个问题,如第二种方法所示。所以充分利用好python中一些可迭代对象的性质,会节省很多的代码,同时也让我们少犯错误。

5.频繁的使用全局变量

作为python的初学者,大家都喜欢定义全局变量,并在函数中改变全局变量,不可否认的是某些地方需要在函数中改变全局变量,但是这样的方法会对程序带来伤害,程序的安全性会变得脆弱。大家需要在平时的编程中改变这种习惯,如下图所示。

在编程时,我们应该尽量使用传参的形式来使用全局变量,而不是直接修改全局变量。因为全局变量大多数情况下是所有的函数共享的变量,为了保证程序的安全,不应该随便被改变,除非在程序设计的时候,要求去改变全局变量。

6.明确是python2还是python3

在初学python的时候,大家可能会被python2还是python3搞得手足无措,无法及时的在python2和python3的语法中进行切换,大家需要明确自己使用的python版本,因为python2与python3区别还是比较多的,因此大家需要格外小心,如下图所示。

由于python2和python3中的输出表达形式不同,所以大家需要在使用print函数时,在python3版本后面加小括号进行输出。

7.分不清”is”和“==”的区别

对于“is”和“==”的使用 ,大家平时多用来判断两个值是否相等,但是这“相等”在python中也有不同的概念,我们要区分是地址相等还是数值相等,如下图所示。

上述程序中我们分别利用is和==俩判断两个列表是否相等,可以看出,is是判断两个列表的地址是否相等,而==是看两个列表中的数值是否一致。大家可以记住一个顺口溜:is看地址,等号看内容,这样再使用is和==进行元素判断时就不会再犯错误了。

8.将python的关键字作为变量名称

作为python的初学者,往往会搞不清楚python的关键字有哪些,从而会使得程序报错。

上述的程序中,我们利用关键字“class”来创建新的类别,这会导致程序报错,同时我们可以发现,编辑器对于关键字的提示是不同的颜色提示,告诉我们使用的是关键字,从而让我们注意不要使用关键字作为变量名称。

9.使用未定义的局部变量

对于局部变量,我们在调用它的时候需要确保它被定义,如下图所示。

对于printLocalNum1,我们没有定义localnum就调用它 ,结果必然报错,但是在printLocalNum2中,我们通过判断输入的大小,给localnum进行赋值,然后输出localnum的结果,这里,我们通过if else做了万全的判断,确保无论在何种数值(注意必须是数值)输入下,localnum都会被进行赋值,从而不会调用未定义的localnum。

10.规避++操作和—操作

Python虽然语法简单,但是对于C++、java中的++或者—的自增和自减操作是不支持的,原因是为什么呢?小编给大家一个我个人的理解,由于在python中整数是不可变类型,创建之后就不能被改变,而自增和自减就是将原先地址里的数值进行改变替换,这与python不可变类型相违背,因此就无法实现自增或者自减操作了。

通达信公式转python为什么很难_[转]N年Python老司机,血泪总结新手常见10大错误...相关推荐

  1. Python老司机总结新手常见10大错误

    作为python的新手,大家在上手python的时候都会或多或少的接触到一些rookie mistake,也就是菜鸟级别的错误.小编作为一个老司机也是从这些错误中一点一点的积累经验,才慢慢的能够熟练的 ...

  2. 通达信公式转python为什么很难_转行数据分析为什么这么难?

    怎么说呢,转行不是一件容易的事情!!! 不像前几年,学个SQL和Python就可以出去找数据分析相关的工作了,那时候企业对大数据的需求旺盛,稍微找个跟大数据沾边的人都可以来应聘,那段时期可以说是一个比 ...

  3. 通达信公式解密工具5.05_我是亲民_新浪博客

    最近在研究股票,必然会用到通达信行情软件,这里面有很多的指标.公式,网上也有很多,如果想要加以改进,很多都进行了加密,不能修改,通达信公式解密工具就可以很好的解决这个密码的问题. 用法: 把要解密的指 ...

  4. 通达信 python插件选股_自己做量化交易软件(20)通达信公式选股程序的实现

    自己做量化交易软件(20)通达信公式选股程序的实现 1.用小白2很好实现.首先获取板块中股票,存放在列表中.例如获取"上证50" import HP_tdx as htdx fro ...

  5. 自己做量化交易软件(19)通达信公式转Python代码的程序

    ** 自己做量化交易软件(19)通达信公式转Python代码 ** 小白量化平台框架是本地化量化平台,用户的策略在用户自己电脑中执行,操作习惯仿股票软件,指标算法支持类通达信指标,回测也支持通达信大智 ...

  6. 小散量化炒股记|手把手教你转换通达信公式,盘整后均线粘合突破

    前言 通达信的公式编写功能非常流行,很多高手都是在通达信上编写公式来分析股票的. 作为过来人,建议大家在初期的策略研究阶段,选一个通用的平台进行策略研究,因为有现成的功能模块可以调用,这样就能把精力聚 ...

  7. 自己做量化交易软件(33)小白量化实战7--投资理念与通达信公式回测(1)

    自己做量化交易软件(33)小白量化实战7–投资理念与通达信公式回测(1) 什么是投资理念?我们先给大家讲个小故事. 从前,有个郑国人,打算到集市上买双鞋穿.他先把自己脚的长短量了一下,做了一个尺子.可 ...

  8. 自己做量化交易软件(20)通达信公式选股程序的实现

    自己做量化交易软件(20)通达信公式选股程序的实现 1.用小白2很好实现.首先获取板块中股票,存放在列表中.例如获取"上证50" import HP_tdx as htdx fro ...

  9. 自己做量化交易软件(41)自编仿通达信公式及自编因子公式的计算速度比较及因子公式结果排名

    自己做量化交易软件(41)自编仿通达信公式及自编因子公式的计算速度比较及因子公式结果排名 自编仿通达信指标公式是对单只股票计算,如果对一批股票计算,只能用循环来逐个处理. 自编因子指标公式是对一批股票 ...

最新文章

  1. 网络工作室暑假后第二次培训资料(SQLServer存储过程和ADO.NET访问存储过程)整理(一)...
  2. HTTP Referer 防外链
  3. noip 2017棋盘
  4. 重建二叉树(基于js)
  5. 学习C++和编程的50个观点
  6. 域用户频繁被锁定怎么解决_视频素材太多怎么办?看Mac用户如何使用NAS解决存储难题...
  7. InfoPath中的Rich Text Box中如何加“回车”
  8. 复练-软考网规-两地三中心
  9. IP设置应用v1.0
  10. LeetCode(908)——最小差值 I(JavaScript)
  11. Linux LAMP架构搭建
  12. 廖雪峰python教程答案
  13. 学生成绩管理系统简单c语言源代码,c语言学生成绩管理系统源代码
  14. impala ERROR: TransmitData() to 10.19.231.254:27000 failed: Network error107
  15. Python下载及环境的安装
  16. HTML如何把输入框变成必填值,required输入框为必填项
  17. 路飞学城-python开发集训-第一章
  18. oracle 返回 xml解析,Oracle xmltable解析返回LPX-00209(Oracle xmltable parsing return LPX-00209)...
  19. MySQL中的自增主键用完了怎么办?
  20. cdh6.3安装以及整合spark2、flink1.9

热门文章

  1. html语言div图片垂直居中,图文详解图片水平垂直居中的五种方法
  2. MNIST图像谱聚类的案例实现
  3. c语言笔试题目,C语言考试题库及答案2015.doc
  4. Open3D点云库 C++学习笔记
  5. 布尔表达式、条件判断
  6. 878. 第 N 个神奇数字 数学+二分
  7. MPU6500驱动调试笔记(STM32F407+SPI)
  8. 国产CPU乱战遭遇生态壁垒:英特尔工艺领先龙芯两代
  9. 【JVM】8_对象优先在Eden分配
  10. c语言中字符指针加加操作,C语言 指针操作练习