Py学习  »  Python

为什么python不允许连字符

Aaron Fischer • 5 年前 • 893 次点击  

我一直在想,为什么不能在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

我相信吉多先生一定是因为某些原因才这么做的。我在谷歌上搜索,但找不到答案。有人能帮我照一下吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30341
 
893 次点击  
文章 [ 4 ]  |  最新文章 5 年前
High Performance Mark
Reply   •   1 楼
High Performance Mark    14 年前
is-even(num)

包含连字符?我认为这是函数返回值的减法,即使参数num来自is值。

正如@jdupont所说,解析可能很棘手。

作记号

jldupont
Reply   •   2 楼
jldupont    14 年前

因为它会使解析器更加复杂。对于程序员来说,这也会令人困惑。

考虑 def is-even(num): 现在,如果 is 是一个全局变量,会发生什么?

还要注意, - 是python中的减法运算符,因此会使解析更加复杂。

JPvdMerwe
Reply   •   3 楼
JPvdMerwe    14 年前

因为python使用中缀表示法来表示计算,连字符和减号具有完全相同的ASCII代码。您可能有不明确的情况,例如:

a-b = 10
a = 1
b = 1

c = a-b

答案是什么?0还是10?

mipadi
Reply   •   4 楼
mipadi    14 年前

因为连字符用作减法运算符。想象一下你 能够 有一个 is-even 函数,然后您得到如下代码:

my_var = is-even(another_var)

is-even(another_var) 对函数的调用 甚至 或者是减去函数的结果 even 从名为 is ?

Lisp方言没有这个问题,因为它们使用前缀表示法。例如,两者之间有明显的区别

(is-even 4)

(- is (even 4))

口齿不清的