本人之前一直从事JAVA开发,自从转来用python做CV,做了一段时间后,感触繁多。对Python又爱又恨。
爱Python
1、脚本语言,不需要编译,不想Java,如果你本地少了一些包,即使你改了代码也无法编译,那么就无法进行测试。
2、不需要很多的括号,同个代码块,只需要对齐即可。
3、弱变量类型。变量使用不需要先定义,后使用。
4、代码比Java封装性更强,更加简洁。例如print 和java中的 System.out.println() 区别还是很大的。
5、库非常丰富,且封装不错。
恨Pyhon
1、弱变量类型。一个方法返回的一个对象,你在拿到这个对象后,按下. 却发现DEA一点提示都没,这个真的比较难受,相较于之前习惯了Java编码习惯的程序猿来说 ,真的真的是很痛苦的一件事情。
2、代码不需要括号。代码不需要括号是一件很好的事情,但是有时候你不心不是在集成开发环境上动了一下代码,然后直接就报错了,而且那个错有时候莫名其妙,这个对新手来说,或者对从其他语言转过来的人来说,可能是比较蓝瘦的事情。
3、丰富的库, 但是不少底层是用C++。 Python有非常丰富的库,但是有些库底层C++实现的,Python仅仅是包了一层,所以有时候你想去看看如何事先,不好意思,看不了。
4、注释,参数说明不够详细。我接触过python一段时间,发现python的代码注释不够丰富,虽然说写一手好代码,就是最好的注释,但是如果能多点注释也算是锦上添花。
5、弱变量类型。还是想吐槽下,目前自己的水平不够,还是觉得这个弱变量类型给我带来了很多不便。例如,我发现一个类,我本地是看不到他的方法的,但是在环境上却能跑。估计就是我说的那个问题,因为开发环境不知道这个变量是哪个类型所以无法给你提示,所以我有时候真的是在瞎试。例如一个 对象有时候查看他的size 使用size() 有时候却是用size,一个是方法,一个是属性,这个要根据你这个对象的类型来决定。现在最影响我开发效率也是这个问题,希望我早日解决!!然后可以跟大家分享经验。
遇上遇到的很多问题,当然跟自己水水平还是有很大关系。如果我罗列的问题的朋友,请多多给点建议 !非常感谢!!!
为了更清楚描述我说的情况,我将举一下例子。
情况一
我将一个numpy.ndarray类型的值转成tensor ,并赋给了 nump_2_tensor,但是下面在使用这个变量的时候DEA是没有任何提示的,原因很简答,因为DEA根本不知道nump_2_tensor的类型是tensor
情况二
还是上面的例子,我将一个numpy.ndarray类型的值转成tensor ,并赋给了 nump_2_tensor,现在我想直接在这个值后面对这个转换后的变量进行操作,但是发现也是没有任何提示,估计是tensor(nump)这个方法返回不明确?
这个不提示我真没想明白请各路大神指点迷津 !!!