首页
社区
课程
招聘
[原创]闲话数据类型
发表于: 2012-1-7 10:22 4962

[原创]闲话数据类型

2012-1-7 10:22
4962

近日在学习python.一点感想,不知道该发到哪里,就发这儿吧。

python 中,不需要变量声明,直接使用。定义一个新变量是不需要写它的数据类型的,实际上也不允许指定数据类型。一个新变量的数据类型总是从赋值的源自动得到。一个已有变量,如果再次赋值,相当于销毁过去,重新定义,所以可能再次赋值后,变量的数据类型完全不同。

C++相反,变量声明时,必须指定变量的数据类型。变量声明后,数据类型就已经确定,终身不再改变。赋值时,如果源数据类型与本变量不同,则试图自动转化。比如 short 可以自动转化为 int等。如果不可能转化,则编译出错。有时需要用强制转化比如 (short)value 或 static_cast<short>value。自动转化或强制转化都可能产生难于发现的bug。

由此可见,在“变量声明是否需要数据类型”这个问题上,python与C++正好走了两个极端。一个C++程序员很难想象居然会有一种编程语言,全程不需要数据类型,全自动。

走极端总是不好的。

在python中,因为变量不能写数据类型,所以函数的定义只能写参数名,不知道参数的类型 def funcname(p1,p2) 这里p1和p2是什么类型?不知道。这个函数的返回类型是什么?也不知道,要看实现代码。如果函数的实现是 return p1+p2,我们也只能知道:p1与p2的数据类型可能是一致的,返回值看起来也与它们一致。至于是short还是 int 甚至是字串,不知道。由此我们可以得出结论,python的每一个函数,实际上都相当于C++中的模板。

每一个函数都是模板!有必要吗?不可否认,有时候这的确很有用。但多数情况下,一个函数只能应付一种参数类型,只会出现一种返回值类型。python程序员可能需要给每个函数加注解:你应该用什么类型调用我,我会返回什么类型。

python做得过头了。C++也好不到哪里去。明明变量的数据类型可以从赋值源自动得到的,还非要写不可。麻烦,不方便维护。

一个完美的编程语言,应该允许自动变量类型。也允许指定变量类型。应该分清函数与模板。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 6
支持
分享
最新回复 (3)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
neu
2
不知道dao 语言你知道么。很符合你的完美语言的描述http://daovm.net/
2012-1-7 11:31
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
win32汇编  函数参数和返回值只有一种类型   DWORD  也没觉得很蛋疼。
2012-1-8 13:33
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
C++  11  倒是可以用auto  ,  自动推导出类型
分清函数和模板倒是一直可以的!!!
liutaotao是我前BOSS,  看来他的这个想法是很符合潮流的
2017-5-5 17:23
0
游客
登录 | 注册 方可回帖
返回
//