拥有多种数据类型的好处是什么?
使用多种不同的数据类型有什么好处呢?我最近在使用pyqt和pyqwt,发现自己经常要写这样的代码:
grid.setPen(Qt.QPen(Qt.Qt.gray, 0, Qt.Qt.DotLine))
curve.setSymbol(Qwt.QwtSymbol(Qwt.QwtSymbol.Ellipse,
Qt.QBrush(),
Qt.QPen(Qt.Qt.black),
Qt.QSize(5, 5)))
如果上面的代码改成下面这样,会有什么损失呢?
grid.setPen('gray', 0 ,'dotted')
curve.setSymbol('ellipse', 'k', (5,5))
即使某些特定的数据类型是出于技术上的需要,难道不可以在需要这些类型的方法里把字符串转换成这些类型吗?
这是因为pyqt和pyqwt只是C++库的绑定吗?如果是这样,为什么在C++中也需要它们呢?
5 个回答
3
不同类型的变量可以让你在编译的时候(至少在C++中)检查你传入的东西是否正确。比如说,如果所有的东西都用字符串,那你很容易把'gray'
错打成'grey'
,这样可能会让程序搞混。
一个常见的做法是像这样:
greypen = Qt.QPen(Qt.Qt.gray, 0, Qt.Qt.DotLine)
blackpen = Qt.QPen(Qt.Qt.black, 0, Qt.Qt.DotLine)
# ...
grid.setPen(greypen)
# ...
grid.setPen(blackpen)
这样做可以避免你在多次使用相同类型的属性时重复写代码。
4
这里有几个好处:
类型安全的语言(比如C++)有个优点,就是很多错误在编译时就能被发现(而不是在运行时)。这意味着如果你用Qt.grey(注意这个“e”)的话,编译时就会出错,因为这个类型没有定义。
性能更好,内存占用更少。在背后,Qt.gray其实是一个数字,而数字的运算速度比字符串要快得多。
在pyqt的情况下,因为这个库是用C++库封装的,所以它看起来更像C++代码,而不是Python代码。