首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么python不允许在函数和变量名中使用连字符?

问为什么python不允许在函数和变量名中使用连字符?
EN

Stack Overflow用户
提问于 2010-01-14 21:27:45
回答 5查看 27K关注 0票数 27

我一直在想,为什么我们不能在python中的函数名和变量名之间使用连字符

我尝试过Lisp和Clojure等函数式编程语言,其中允许使用连字符。为什么python不能这样做。

代码语言:javascript
复制
# This won't work -- SyntaxError
def is-even(num):
    return num % 2

# This will work
def is_even(num):
    return num % 2

我相信Guido爵士这样做一定是出于某些原因。我用谷歌搜索了一下,但找不到答案。有谁能解释一下这个问题吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-14 21:32:14

因为连字符被用作减法运算符。想象一下,你可以有一个is-even函数,然后你有这样的代码:

代码语言:javascript
复制
my_var = is-even(another_var)

is-even(another_var)是对函数is-even的调用,还是从名为even的变量中减去函数is的结果

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

代码语言:javascript
复制
(is-even 4)

和

代码语言:javascript
复制
(- is (even 4))

在Lisps中。

票数 55
EN

Stack Overflow用户

发布于 2010-01-14 21:35:08

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

代码语言:javascript
复制
a-b = 10
a = 1
b = 1

c = a-b

答案是什么?0还是10?

票数 14
EN

Stack Overflow用户

发布于 2010-01-14 21:29:58

因为这会使解析器变得更加复杂。这也会让程序员感到困惑。

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

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2064329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档