我一直在想,为什么我们不能在python中的函数名和变量名之间使用连字符
我尝试过Lisp和Clojure等函数式编程语言,其中允许使用连字符。为什么python不能这样做。
# This won't work -- SyntaxError
def is-even(num):
return num % 2
# This will work
def is_even(num):
return num % 2我相信Guido爵士这样做一定是出于某些原因。我用谷歌搜索了一下,但找不到答案。有谁能解释一下这个问题吗?
发布于 2010-01-14 21:32:14
因为连字符被用作减法运算符。想象一下,你可以有一个is-even函数,然后你有这样的代码:
my_var = is-even(another_var)is-even(another_var)是对函数is-even的调用,还是从名为even的变量中减去函数is的结果
Lisp方言没有这个问题,因为它们使用前缀表示法。例如,两者之间有明显的区别
(is-even 4)和
(- is (even 4))在Lisps中。
发布于 2010-01-14 21:35:08
因为Python使用中缀表示法来表示计算,而连字符和减号具有完全相同的ascii代码。您可以有不明确的情况,例如:
a-b = 10
a = 1
b = 1
c = a-b答案是什么?0还是10?
发布于 2010-01-14 21:29:58
因为这会使解析器变得更加复杂。这也会让程序员感到困惑。
考虑def is-even(num)::现在,如果is是一个全局变量,会发生什么?
还要注意,-是Python语言中的减法运算符,因此会使解析变得更加复杂。
https://stackoverflow.com/questions/2064329
复制相似问题