JavaScript var x = 10
与Python中的x = 10
相同。有点简单。但在Python中我们为什么要使用
def f(x): x+1
f(0) # => 1
而不是
f(x): x+1
f(0) # => 1
第二个不是更好吗?无论如何,受到The Zen of Python的启发,我的问题是:
答案 0 :(得分:2)
Python的语法并不是试图成为计算机解析明确的最小语法。它试图成为人们可读的语法。函数定义是程序中的重要事件。它值得一个关键词。
你说,"初学者眼睛尽可能多地寻求简洁和简洁。"我不同意初学者希望事情尽可能短。他们希望事情尽可能可读。这需要平衡。
另一个例子,我们可能会像CoffeeScript那样将冒号放在行的末尾。但是冒号是缩进子句期望的一个很好的指标,并且是纯粹极简主义(CoffeeScript)和过度标点符号(C ++)之间的一个很好的折衷。
答案 1 :(得分:0)
期待很多无聊的反驳。人们不喜欢改变。实际情况是,您建议的更改是完全有效的,如果Python最初是以这种方式设计的,那么现在没有人会质疑它。
我也讨厌def
。我认为这是丑陋和多余的。冒号和缩进足以消除函数调用中的函数定义以及建立可读性。
此外,class
关键字将其与类区分开来。 class
要求关键字和函数不要因为函数比类更常见,这也是有意义的。
也就是说,您的帖子更适合https://softwareengineering.stackexchange.com/而不是https://stackoverflow.com/。
答案 2 :(得分:0)
我同意用户29263623 def
增加了一点可读性。
对于变量定义/赋值,var
值得删除,因为它看起来比函数定义更频繁,=
是定义/赋值(自然和短)的良好语法。
与=
不同,:
还有一些其他用法。我可以想到一些情况,删除def
会导致一些混乱(可能主要是python解释器):
a_list_or_tuple[f(x): x]
if f(x): blabla
当然我们可以创建规则来定义这两种情况不是函数定义。但对我来说,这是不必要的,只需使用def
就足够清楚和简单了。