我感觉这个问题有点寻求认同感的意思。算是主观描述吧,称不上客观。
Python的语法,客观来说是集历史上的“常规设计”之大成。以C/Java基本格式作为“常规设计”应该没人不同意吧。Python整体上看是有历史传承的,整体上非常工整,如果不滥用语法特性,相对很少出现歧义,也摒弃了 i++++之类的东西。
由于Python是动态类型语言,最终代码写起来比较灵活,但是相比JavaScript,真的不知要工整到哪里去了。虽然是动态类型,但要求编写者始终熟知每个对象的类型,否则就抛异常给你看;
而且在类型转换时非常严格,甚至连 "abc" + 123这种常见的写法,在Python里都不能用。
以实例来说,我觉得它最“工整”的一面体现在面向对象的设计上。
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print("%s:%s" % (self.name, self.score))
bart = Student("Bart Simpson", 59)
lisa = Student("Lisa Simpson", 87)
bart.print_score()
lisa.print_score()
这个class的定义,成员函数的定义,成员变量的初始化,以及不能省略的self引用,都是为新手铺平道路的设计。恕我实在想不出比这个更“工整”的设计应该是什么样的。它就像是字体里面的“黑体字”,很难想出语法更“工整”的写法。
当然除了工整,整体来说Python在能简洁的地方也保持简洁。包括取消大括号、列表解析语法、非常方便的容器、多样化的循环方式等等,都是优秀且简洁的设计。
如果你想要理解Python的设计思想,和Python之父做一次心灵上的碰撞,我建议用心体会“Python之禅”的前四句话:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
优美胜于丑陋,而清晰胜于不明确。
简单胜于复杂,但复杂胜于混乱。
我在理解这四句话的时候,重心是放在2、4句上的。每当我觉得Python具有“不优美、不简单”的设计的时候,都会发现实际上它是“两权相害取其轻”,当优美和简洁不可达到的时候,它选择了“不美,但清晰”与“复杂,但明确”。这一思想于我而言深受启发,但具体怎么理解还是见仁见智吧。