Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们真的需要def吗?(python语法改进产品)_Python - Fatal编程技术网

我们真的需要def吗?(python语法改进产品)

我们真的需要def吗?(python语法改进产品),python,Python,JavaScript变量x=10与Python中的x=10相同。简单一点。但是在Python中,我们为什么要使用 def f(x): x+1 f(0) # => 1 而不是 f(x): x+1 f(0) # => 1 第二个不是更好吗?无论如何,受Python禅宗的启发,我的问题是: 有哪些潜在障碍可能使第二种模式无法工作?你能给出一些代码示例吗? 如果第二个模式没有问题,Python设计者可以在有人通知他们时更改它吗? Python的语法

JavaScript变量x=10与Python中的x=10相同。简单一点。但是在Python中,我们为什么要使用

def f(x): x+1
f(0)           # => 1
而不是

f(x): x+1
f(0)           # => 1
第二个不是更好吗?无论如何,受Python禅宗的启发,我的问题是:

有哪些潜在障碍可能使第二种模式无法工作?你能给出一些代码示例吗? 如果第二个模式没有问题,Python设计者可以在有人通知他们时更改它吗?
Python的语法并不试图成为计算机解析的最简单的语法。它试图成为人们可读的语法。函数定义是程序中的重要事件。它值得一个关键词

你说,初学者的眼睛,寻找尽可能多的简单和简短。我不同意初学者希望事情尽可能短。他们希望事情尽可能可读。这需要平衡


另一个例子是,我们可能会像CoffeeScript一样,将冒号放在行的末尾。但冒号是一个很好的指标,期望缩进子句,是一个很好的妥协之间的纯粹极简咖啡稿和超过标点C++。人们不喜欢改变。事实是,您建议的更改是完全有效的,如果Python最初是这样设计的,那么现在没有人会质疑它

我也讨厌def。我认为这是丑陋和多余的。冒号和缩进足以消除函数定义与函数调用之间的歧义,并建立可读性

此外,class关键字将其与类区分开来。因为函数比类更常见,所以类需要关键字而函数不需要关键字也是有意义的

也就是说,您的帖子比。

我同意用户2963623的说法,def增加了一些可读性

对于变量定义/赋值,var是值得删除的,因为它比函数定义更频繁地出现,=是定义/赋值的好语法,自然且简短

不像=,:还有一些其他用法。我可以想到一些情况,删除def会导致一些混乱,可能主要是python解释器:

列表或元组[fx:x] 如果fx:blabla
当然我们可以创建规则来定义这两种情况都不是函数定义。但对我来说,这是不必要的,只要使用def就足够清晰和简单。

您也删除了类吗?如何区分ClassSuperclass和functionparameter?你可以考虑让这篇文章认真地提交一个PEP。我们可以保持班级超级:。如果这样定义类是没有问题的。或者我们可以将Class:inheritSuper…我认为def为代码增加了一定的可读性。当你有一行又一行的代码时,它就像一个视觉标记。如果它没有坏,就不要修理它!这似乎不是一个关于特定编程问题的问题。我认为在这个例子中,定义的一致性比保存几个按键更重要。如果函数不需要'def'而类需要'class',我们就失去了一些可预测性,正如前面所指出的,我们也不能删除'class',否则就会产生混淆。+1。Per emphasis mine:“Guido的一个重要见解是,代码的阅读频率远远高于编写频率。。。正如《政治公众人物》第20版所说,可读性至关重要。优雅的举动:空洞的反驳:我并不是说所有可能的反驳都是空洞的。有人可以给出理由充分的反驳。但根据我的经验,我提出了挑战现状的新想法:其中大多数可能会成为现实。空洞的:空洞的,没有意义的内容。我不认为有人在if子句或元组中定义了一个函数,所以我不认为这会引起问题。但我同意有点混淆。正如我编辑的,混淆主要是python解释器。我们很可能在元组/列表索引和if/while子句中调用函数。然后,口译员需要额外的工作来区分。而对于语言本身,为了使函数定义没有任何歧义,与def相比,描述将更加复杂