近段时间要在某个项目上实施一些功能,我想用python来实现,必竟很久以前学过这种语言,可是突然发现,在实际把这种语言应用到项目时会产生很多问题。
其实python从某个意义上讲,是一种相当烂的语言。
烂就烂在它的模块机制上。
先来一段代码:
module_a.py
class InAClass(object):
print 'show me the money'
pass
main.py
import module_a
上面的代码肯定会输出'show me the money',很简单,class里的代码不是定义,而是一段执行代码。也就是说,python里面没有定义这回事儿,import,说实在的,就是执行里面的代码。这样就会产生一个问题,递归import。
再来代码:
module_a.py
import module_b
class InAClass(object):
print 'in module_a::InAClass'
pass
module_b.py
import module_a
class InBClass(object):
print 'in module_b::InBClass'
pass
main.py
import module_a.py
....
上面的代码会报错,因为已经产生的无限递归,在module_a import module_b时,因为是执行module_b里的代码,而且module_b里的代码又import module_a,如此递归下去,导致出错。
pythoner可能会说,这有什么,小心点就行了。可是,如果只是一个小脚本的话还是没有什么问题的。可是,如果是分开多个文件并相互import的大项目就麻烦了。比如说SQLAlchemy,将多个model定义在不同的模块里,在定义关联时,就必须要用到import,比如a关联b,b又定义了关联a,那么就会导致递归import的情况。
有些地方相当的不足,比如说无法正确地定义模块,比如当前包和根下都有个user模块,那么我怎么才能引用根下的user模块呢?
就这一点来看,python还是相当小家子气的语言。比如说,使用function来定义web action,来个mvt模式,还说这是优雅的。说实在的,这并不是优雅的,你得定义相当多的装饰器才能达到面向对象语言简单的继承就达到的功能。
说实在的,python在一些地方做得不错,可是,为什么不做得更规范一些呢?其实更改一下机制,迎合企业开发,
这有利于语言的推广。