我一直在想,为什么不能在python中的函数名和变量名之间使用连字符呢?
尝试过Lisp和Clojure等允许使用连字符的函数式编程语言。为什么蟒蛇不这样做。
# This won't work -- SyntaxError def is-even(num): return num % 2 # This will work def is_even(num): return num % 2
我相信吉多先生一定是因为某些原因才这么做的。我在谷歌上搜索,但找不到答案。有人能帮我照一下吗?
is-even(num)
包含连字符?我认为这是函数返回值的减法,即使参数num来自is值。
正如@jdupont所说,解析可能很棘手。
作记号
因为它会使解析器更加复杂。对于程序员来说,这也会令人困惑。
考虑 def is-even(num): 现在,如果 is 是一个全局变量,会发生什么?
def is-even(num):
is
还要注意, - 是python中的减法运算符,因此会使解析更加复杂。
-
因为python使用中缀表示法来表示计算,连字符和减号具有完全相同的ASCII代码。您可能有不明确的情况,例如:
a-b = 10 a = 1 b = 1 c = a-b
答案是什么?0还是10?
因为连字符用作减法运算符。想象一下你 能够 有一个 is-even 函数,然后您得到如下代码:
is-even
my_var = is-even(another_var)
是 is-even(another_var) 对函数的调用 甚至 或者是减去函数的结果 even 从名为 is ?
is-even(another_var)
甚至
even
Lisp方言没有这个问题,因为它们使用前缀表示法。例如,两者之间有明显的区别
(is-even 4)
和
(- is (even 4))
口齿不清的