@
no1xsyzy 其实你说的这些才是我觉得 Python 「应该有的样子」。
但是在项目上,工程上,去用这些黑魔法,还是算了吧,我反正不敢。
我自己写项目也会写 DSL,包括像你说的重载运算符实现各种高级语义。
我自己做的 workflow 项目,就是用 +() 和 |() 运算符来实现数据流定义的。
我平时是写 Ruby 的,天天用黑魔法,至少我可以随便放心用,不怕被人打死……
我们习惯于写 2.days.ago 或者 5.minutes.since,而不是 datetime.now() - timedelta(days=2)。
在 Python 里你们会把 Integer 类给打开然后往里塞奇怪的方法吗?应该不会吧。
我说 Python 死板也不是在贬低他。黑魔法越少,代码越容易读懂,这是 Python 被大量公司采用的原因之一,也是 Java 8 被大量公司采用的原因。(我司本来还在用 Java 7,连 lambda 都没有,我随便写一个闭包都要各种 hack……)
实际上,我一个不懂 Python 的人,都可以读写 Python 代码,本身就说明 Python 是一个相对死板的语言,可以让任何写其他语言的人都能快速上手。
同样,我一个不懂 Java 的人,也可以直接上手做 Java 开发,也可以说明 Java 是一个相对死板的语言。
有一点我要承认,我对 Python 的印象基本停留在十几年前,差不多 Python 3 还没出生的年代。如果现在 Python 对那些黑魔法黑科技更宽容了,那倒也是件好事,至少写代码的人会轻松很多。