社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

为什么python不允许连字符

Aaron Fischer • 6 年前 • 1703 次点击  

我一直在想,为什么不能在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
 
1703 次点击  
文章 [ 4 ]  |  最新文章 6 年前
High Performance Mark
Reply   •   1 楼
High Performance Mark    15 年前
is-even(num)

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

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

作记号

jldupont
Reply   •   2 楼
jldupont    15 年前

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

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

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

JPvdMerwe
Reply   •   3 楼
JPvdMerwe    15 年前

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

a-b = 10
a = 1
b = 1

c = a-b

答案是什么?0还是10?

mipadi
Reply   •   4 楼
mipadi    15 年前

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

my_var = is-even(another_var)

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

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

(is-even 4)

(- is (even 4))

口齿不清的