Why does python disallow usage of hyphens within function and variable names?
Because hyphen is used as the subtraction operator. Imagine that you could have an is-even
function, and then you had code like this:
my_var = is-even(another_var)
Is is-even(another_var)
a call to the function is-even
, or is it subtracting the result of the function even
from a variable named is
?
Lisp dialects don't have this problem, since they use prefix notation. For example, there's clear difference between
(is-even 4)
and
(- is (even 4))
in Lisps.
Because Python uses infix notation to represent calculations and a hyphen and a minus has the exact same ascii code. You can have ambiguous cases such as:
a-b = 10
a = 1
b = 1
c = a-b
What is the answer? 0 or 10?
Because it would make the parser even more complicated. It would be confusing too for the programmers.
Consider def is-even(num):
: now, if is
is a global variable, what happens?
Also note that the -
is the subtraction operator in Python, hence would further complicate parsing.