当前位置:刘伯温心水图库本港台 > 软件陷阱 >

对我来说极度灵活性其实是python的“陷阱”

  在python里,我搞一个数组出来,第一个元素是整形数,第二个元素是实形数,第三个元素是一个字符串,第四个元素是一个小数组,第五个元素是个对象……简直完全没有限制。

  除非你事先声明某个数组是弹性的,否则fortran一定会给你一个固定大小的数组,而且数组里不能套小数组。

  在python里,数组天生就是弹性的。我喜欢用字典形式定义数组。一开始直接规定空子典,var = {},然后你直接往里装任何东西都行,只要你的电脑内存够用。

  在fortran里,你调用数组元素的方式是var[1],var[3][5],数组元素只能用数字或整型变量来调用。在python里,你调用数组元素的方式是var[wokao],var[hello][5],var[王二][成绩][数学成绩],完全是自然语言。

  我又从不做注释,基本可以死翘翘了。自己写的代码,只要超过200行儿,一个星期,只要一个星期以后,我就无法继续维护它了,天知道我当初是怎么想的。

  用python写东西,三个字儿,糙猛快。再加三个字儿,维护难(仅对我而言)@raillgun

  fortran不止数组要求数据类型一样,而且非常难于采用可变长度的数组,有时候觉得类更方便。

  (当然一说性能,大部分情况下python就捂脸了,不过人家本来就不是为了性能而生的)

  Level 4 (黑子), 积分 1062, 距离下一级还需 438 积分

  python的list的这个特性还是不错的,比如写分子动力学的时候,可以把坐标、元素名称、电荷数等等一股脑塞到同一个list里面,以后一直对这个list操作就可以了。

  至于可维护性,我觉得python比C或者Fortran方便维护,因为结构更清晰(强制缩进);C和Fortran则是强迫写程序的时候就一定要写注释,否则可能写了后面忘了前面

  Level 4 (黑子), 积分 577, 距离下一级还需 923 积分

  比如说Python的数组元素的类型太灵活了,可以写一个自定义类,做一个接口,用来过滤存入这个类的数据类型。完全可以像Fortran一样,虽然限制得死死的,但是不会出难维护的问题。

  反倒是对Python没有经验按照Fortran来写时,潜在的麻烦会一不小心给你搞个大事件。

  用之前想好用它的定位嘛,如果是用来大部分代替Fortran,真得花时间来细细整一整。如果用来代替BASH,其实倒无所谓啦。用着趁手就行。

  这个……简直是乱吐槽啊…… 是楼主自己没有正确理解 Python 中的概念,完全是冤枉了 Python。

  ,如果楼主要定义一个数组 【注意!楼主说的是数组!】,应该用 Numpy 的 array() 函数来定义,这样才是标准的 “N维数组”。定义的数组内的元素是统一类型的,要么全是 real,要么全是 int,要么全是 string,和 Fortran,C 的数组(概念上)是一模一样的(当然,在操作上,Fortran 和 C 在取行和取列的默认参数是相反的风格)。详见如下链接:

  楼主说“在python里,数组天生就是弹性的”,楼主你的概念是模糊的……你说的其实是 Python 里列表(list),根本不是数组啊。如果楼主用 numpy.array() 定义了的数组之后,数组的大小是固定的,没有 .append() 的属性,不能通过这个方式增加元素。但是 Numpy 提供了很多操作数组的函数,比如水平堆积numpy.hstack(),纵向堆积 numpy.vstack(),拆分 numpy.split(),合并catenate() 等等一系列的数组操作函数。

  ,楼主说“我喜欢用字典形式定义数组”,我只能呵呵呵了…… 楼主你定义的是字典好吗,不是数组啊!

  楼主说“在python里,你调用数组元素的方式是var[wokao],var[hello][5],var[王二][成绩][数学成绩],完全是自然语言。”这再次暴露了楼主概念不清,楼主你用的不是数组,你用的是 lists of list 的数据结构。

  如果楼主用 Numpy.array() 定义了数组,那么调用数组元素的方式同样是 array[1], array[3][5], 还可以用切片方式 array[3:10][::2] 调用,甚至还可以 array_1[ array_2[:10] ],array[ array -3 ] 来调用。

  ,楼主说到注释。我只能说,如果用 Python 来写代码,至少我个人觉得可读性是最强的。只要你写代码的思路够清晰,基本上可以不写注释(当然,写注释是个很好的习惯)。我半年前写的 500 多行的代码,拿出来修改整理,看上十来分钟就能回忆起来。如果楼主说难以维护,只能是楼主自己没理清思路罢了。

http://jeffcafone.com/ruanjianxianjing/572.html
点击次数:??更新时间2019-07-07??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】